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

、の各アクションについてstatecityCRUDが正常に完了するたびに、その親(およびその親の親)にタッチします。

これを行うためのドライヤーの方法はありますか?オプションについては知っていautosaveますが、新しく作成された関連レコードに対してのみ機能します。破棄され、更新されたレコードも含めたいと思います。1つcityが変更された場合、何かが変更されたことを反映するためにタイムスタンプがstate付けられます。country

どうもありがとう。

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 に答える