【发布时间】:2015-02-23 08:43:54
【问题描述】:
我正在使用 rails 4.1.5 和 ruby 2.1.2。
我有两个模型:
event 和 record
相当标准的关联:event has_many records 和 record belongs_to event。
event 和 record 都有一个状态机。我正在使用state_machine gem (https://github.com/pluginaweek/state_machine)
我试图找出一种方法,当 event 被取消时,它会更新所有关联的 records 并将它们也设置为取消。
我已经通过控制器实现了这一点,但我尝试订阅瘦视图、愚蠢的控制器、胖模型方法,并且我试图确保没有任何东西从裂缝中溜走......
这是我的event 模型的摘录:
state_machine :initial => :open do
# event to handle cancelling
# This is a final state
event :cancel do
transition :open => :cancelled
self.records.each do |record|
record.cancel
end
end
end
显然还有很多其他的过渡等,但为了简单起见,我将其浓缩...
我从 Rails 得到的错误是:
undefined method `records' for #<StateMachine::Event:0x007f58bada9750>
所以我假设当我输入 self.records.each 时,它正在使 self = 状态机?
有没有办法在不使用观察者的情况下解决这个问题?
任何帮助表示赞赏!谢谢!
【问题讨论】:
标签: ruby-on-rails ruby state-machine