обратный вызов after_add для has_one - PullRequest
       25

обратный вызов after_add для has_one

4 голосов
/ 23 сентября 2010

Кажется, это несоответствие между 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 Ответ

1 голос
/ 23 сентября 2010

Я думаю, что вы можете использовать before_save и проверить, изменилось ли отношение автомобилей:

before_save :do_something

def do_something
  puts "Added car" if car_changed?
end
...