我有一个2级嵌套模型:
country <- state <- city
目前,在每个控制器中,在所有CRUD操作中,我将找到其父模型并为每个模型运行.touch
。例如:
# cities_controller.rb
def update
@state = State.find(params[:state_id])
@country = Country.find(@state.id)
...
@state.touch
@country.touch
end
对于state
,city
中的每个操作,只要CRUD成功完成,我就会触及其父级(及其父级的父级)。
有没有DRYer方法可以做到这一点?我知道autosave
选项,但它只适用于新创建的关联记录。我想要包括销毁,更新的记录。如果更改了一个city
,则state
和country
也会加上时间戳,以反映某些内容已发生变化。
非常感谢。
答案 0 :(得分:1)
如果我是你,我更喜欢在这个模型中重写touch
函数。
class State < ActiveRecord:Base
def touch
self.updated_at = Time.now
self.state.touch
end
end
class City < ActiveRecord:Base
def touch
self.updated_at = Time.now
self.state.touch
end
end