如何检查关联是否从nil更改

时间:2016-07-01 19:11:02

标签: ruby-on-rails activerecord

每当模型上的某些属性发生变化时,我想做一些事情:

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?。如何检查是否已建立关联?

1 个答案:

答案 0 :(得分:1)

如果您在before_save模型上添加Vendor,则会调用User上的方法来解决您的问题。

这取决于供应商和用户之间的关系,但您应该能够在其中一个模型上检查vendor_id_changed?user_id_changed?,如果不是连接表