每当模型上的某些属性发生变化时,我想做一些事情:
class User < ActiveRecord::Base
has_one :vendor
before_save :do_stuff_if_dirty
def do_stuff_if_dirty
fields = ['first_name', 'last_name', 'zipcode']
if fields.any? { |field| (self.send("#{field}_changed?".to_sym)) }
# do stuff
end
end
end
当相关供应商从nil
更改为Vendor
的实例时,我还想做一些事情。但因为这是一个关联,我不能打电话给user.vendor_changed?
。如何检查是否已建立关联?
答案 0 :(得分:1)
如果您在before_save
模型上添加Vendor
,则会调用User
上的方法来解决您的问题。
这取决于供应商和用户之间的关系,但您应该能够在其中一个模型上检查vendor_id_changed?
或user_id_changed?
,如果不是连接表