gpt4 book ai didi

ruby-on-rails-3 - 如何在 Rails 3 中实现 aasm 来实现我想要的功能?

转载 作者:行者123 更新时间:2023-12-04 06:35:46 24 4
gpt4 key购买 nike

我是 Rails n00b,有人建议我为了跟踪用户帐户的状态(即付费、未付费(因此禁用)、免费试用等),我应该使用“AASM” gem。

所以我找到了一个似乎最受欢迎的:https://github.com/rubyist/aasm但是说明很模糊。

我有一个用户模型和一个计划模型。用户模型管理您可能期望的所有内容(用户名、密码、名字等)。计划模型管理用户应该分配到的订阅计划(有限制)。

所以我试图弄清楚如何使用 AASM gem 来做我想做的事情,但不知道从哪里开始。

我要创建一个新模型吗?那么我是否在我的 User 模型和 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

最佳答案

考虑到它,这就是结果:

您没有在 Plan 中设置状态是对的,不知道我在想什么。要么在 User 中做模型,或制作 Account模型,其中 belongs_to :user .然后,在您的帐户中尝试这些(这都是关于逻辑的,所以如果您想要更多状态,只需编写它们):

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 中模型,正如你所建议的。

关于ruby-on-rails-3 - 如何在 Rails 3 中实现 aasm 来实现我想要的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4902895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com