我有这样的模型结构:
TestCase has_many :test_case_steps
TestCaseStep belongs_to :test_case
TestCase
具有status
属性。
TestCaseStep
具有status
属性。
用户可以更改TestCaseStep
的{{1}}。如果所有关联的status
对象的状态都已“通过”,我想更改TestCaseStep
的{{1}}。
用户无法手动更新TestCase
的{{1}}。
我认为可以使用一些回调,检查所有相关对象的状态,一旦全部为status
,就更新TestCase
的一个。{1}}。但是使用其他模型所涉及的回调是邪恶的。
请用方向暗示我。可能存在一些 whatcher / 观察者方法或类似的东西。谢谢!
答案 0 :(得分:1)
rails-observers gem是Rails 3观察者重构为宝石。
另请查看ActiveSupport::Concern,以混合您要进行更新的代码。
如果您愿意添加gem,请参阅wisper,这样可以进行简单的发布和订阅。