has_ad的after_add回调

时间:2010-09-23 10:52:14

标签: ruby-on-rails activerecord callback associations

这似乎是has_many和has_one之间的不一致。

has_many关联允许您指定在将对象添加到集合后调用的after_add回调。

class Person
  has_many :parents, :after_add => { puts "Added new parent" } # allowed
  has_one :car, :after_add => { puts "Added car" } # not allowed
end

class Car
  after_create :assign_name
  def assign_name
    self.name = "Herbie"
  end
end

不幸的是,has_one关联没有after_add回调。你如何为has_one实现同样的目标?

1 个答案:

答案 0 :(得分:1)

我认为您可以使用before_save,并检查汽车关系是否已更改:

before_save :do_something

def do_something
  puts "Added car" if car_changed?
end