我是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
答案 0 :(得分:3)
考虑到这一点,这就是出现的结果:
你没有在Plan
中建立状态,不知道我在想什么。可以在User
模型中执行此操作,也可以创建Account
模型belongs_to :user
。然后,在你的帐户中尝试这些(这些都是关于逻辑的,所以如果你想要更多的状态,那么就是mak'em):
aasm_initial_state :free
aasm_state :free
aasm_state :paid
aasm_state :disabled
aasm_event :pay do
transitions :to => :paid, :from => [:free, :disabled]
end
aasm_event :disable do
transitions :to => :disabled, :from => [:free,:paid]
end
因此,当您创建新用户时,也要为其创建帐户。不要担心帐户创建时的初始状态,创建帐户时会自动将其设置为“空闲”。或者,如果听起来更容易,可以按照您的建议在User
模型中使用。