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

问题描述:

有关KIS我有两种型号:ReservationsContainersRails:如何在未更新的模型上执行回调,但与更新后的模型

Container 
has_many :reservations 

Reservation 
belongs_to :container 

当我更新预订时,我也想对各个容器执行回调。

这样做的好方法是什么?

我应该使用嵌套休息路线,把容器逻辑在预订模式,还是其他什么东西

Rails有所谓touch的选项。

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

Rails的更新Container对象时永远Reservation对象更改的updated_at领域。如果您在Container课程中有任何回调,当Reservation对象发生更改时,将会调用它们。

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

    def reservation_change 
    # handle the updates.. 
    end 
end 
+0

感谢您的回答 – s84 2010-04-29 08:11:42

+2

请注意,touch不再调用Rails 3中的验证或回调。 – ChrisInEdmonton 2012-09-11 20:22:58