【发布时间】:2011-02-04 21:01:59
【问题描述】:
我是 Rails n00b 并被告知,为了让我跟踪用户帐户的状态(即已付费、未付费(因此禁用)、免费试用等),我应该使用 'AASM ' 宝石。
所以我找到了一个似乎最受欢迎的:https://github.com/rubyist/aasm 但说明很模糊。
我有一个用户模型和一个计划模型。用户模型管理您可能期望的所有内容(用户名、密码、名字等)。计划模型管理应分配给用户的订阅计划(有限制)。
所以我想弄清楚如何使用 AASM gem 来做我想做的事情,但不知道从哪里开始。
我要创建一个新模型吗?那么我是否在我的用户模型和 AASM 模型之间建立关系?如何建立关系?如,用户“has_many”状态?这对我来说似乎没有多大意义。
非常感谢任何指导。
谢谢。
编辑:如果其他人像我一样对 AASM 感到困惑,这里是 Envy Labs 的优秀人员对它们在 Rails 中的功能的一个很好的解释:http://blog.envylabs.com/2009/08/the-rails-state-machine/
Edit2:这看起来如何:
include AASM
aasm_column :current_state
aasm_state :paid
aasm_state :free_trial
aasm_state :disabled #this is for accounts that have exceed free trial and have not paid
#aasm_state :free_acct
aasm_event :pay do
transitions :to => :paid, :from => [:free_trial, :disabled]
transitions :to => :disabled, :from => [:free_trial, :paid]
end
【问题讨论】:
-
envylabs 链接不再起作用。这是该博文的工作链接:madewithenvy.com/ecosystem/articles/2009/rails-state-machine
标签: ruby-on-rails-3 aasm