Ruby on rails 使用两个状态机的拆分ActiveRecord模型
我有一个模型使用两个 其中,Ruby on rails 使用两个状态机的拆分ActiveRecord模型,ruby-on-rails,activerecord,encapsulation,state-machine,Ruby On Rails,Activerecord,Encapsulation,State Machine,我有一个模型使用两个 其中,xxx/yyy可以是MyModel实例或包装类中的方法。我不知道 问题是:做这件事的最佳方法是什么?简短回答:将状态机作为一个模块进行分解 更长的版本:你可以看看,海报回答了同样的问题 希望这有帮助 class MyModel < ActiveRecord::Base state_machine :call_state, :initial => :pending do event :start do transition :pe
xxx
/yyy
可以是MyModel
实例或包装类中的方法。我不知道
问题是:做这件事的最佳方法是什么?简短回答:将状态机作为一个模块进行分解
更长的版本:你可以看看,海报回答了同样的问题
希望这有帮助
class MyModel < ActiveRecord::Base
state_machine :call_state, :initial => :pending do
event :start do
transition :pending => :started
end
event :restart do
transition :started => :pending
end
event :finish do
transition :started => :finished
end
end
state_machine :payment_state, :initial => :unpaid do
event :pay do
transition :unpaid => :paid
end
event :pay_back do
transition :paid => :paid_back
end
event :reject_payment do
transition :unpaid => :rejected
end
end
#tons of methods related with call_state
#tons of methods related with payment_state
end
def can_call?
xxx.paid? and yyy.can_start?
end