Rails:如何在未更新但与更新模型相关的模型上执行回调

时间:2010-04-29 04:08:23

标签: ruby-on-rails

到KIS我有两个模型:ReservationsContainers

 Container 
 has_many :reservations

 Reservation
 belongs_to :container

当我更新预订时,我也想在相应的容器上进行回电。

这样做的好方法是什么?

我是否应该使用嵌套的休息路由,将容器逻辑放入预留模型或其他内容

1 个答案:

答案 0 :(得分:1)

Rails有一个名为touch的选项。

class Reservation < ActiveRecord::Base
  belongs_to :container, :touch => true
end

updated_at对象发生更改时,Rails会更新Container对象的Reservation字段。如果您在Container课程中有任何回调,则会在Reservation对象更改时调用它们。

class Container < ActiveRecord::Base
  has_many :reservations
  after_update :reservation_change

  def reservation_change
    # handle the updates..
  end
end