Rails 3.0.10 не вызывается обратный вызов before_validation для связанных объектов коллекции - PullRequest
4 голосов
/ 15 ноября 2011

У меня есть объект с именем Parent, который имеет дочерние объекты has_many:

has_many :children
accepts_nested_attributes_for :children, :allow_destroy => true

Дочерний объект включает модуль, который определяет :before_validation обратный вызов:

def self.included base
  base.class_eval do
    before_validation :my_callback
  end
end

protected
def my_callback
   logger.debug "see me!"
end

Я заметил, что при создании родительских и вложенных атрибутов для дочерних элементов обратный вызов :before_validation не вызывается для каждого дочернего элемента. Это предполагаемое поведение? Вместо этого я попытался сделать обратный вызов before_save, и он, кажется, работает нормально.

Это на Rails 3.0.10.

Спасибо!

1 Ответ

7 голосов
/ 15 ноября 2011

Вы должны использовать validates_associated:

class Parent < ActiveRecord::Base
  has_many :children
  accepts_nested_attributes_for :children, :allow_destroy => true
  validates_associated :children
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...