0

我有一个 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

对于 , 中的每个操作statecity只要 CRUD 成功完成,我就会触摸其父级(及其父级的父级)。

有没有 DRYer 方法可以做到这一点?我知道autosave选项,但它只适用于新创建的关联记录。我还想包括已销毁、更新的记录。如果一个city被改变了,它statecountry将被加上时间戳以反映某些东西已经改变了。

非常感谢。

4

1 回答 1

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
于 2012-04-22T06:06:29.567 回答