有没有办法在父母之前停止拯救孩子。
我正在使用具有多态关联的accepts_nested_attributes_for
。
我使用了多个选项validates_presence_of :parent_id
,validates_assoicated :parent
但没有一个正在使用。
例如,我有一个班级
Class Person
include HasPhoneNumbers
..
end
module HasPhoneNumbers
def self.included(kclass)
kclass.has_many :phone_numbers, :as => :callable, :dependent => kclass == Person ? :destroy : :nullify
end
klass.accepts_nested_attributes_for :phone_numbers, :reject_if => lambda {|pn| pn.keys.any?{|k| k.to_sym != :id && pn[k].blank?} }
end
class PhoneNumber
belongs_to :callable, :polymorphic => true
end
因此,由于人物对象验证而保存人员,因此无法保存。但是,孩子(phone_number)正在保存。所以我需要限制它在父(人)保存之前不保存child(phone_number)。
我确实使用validates_presence_of
和validates_associated
尝试了多个选项,但没有一个适合我。
答案 0 :(得分:0)
@person = Person.new(params[:person])
ActiveRecord::Base.transaction do
person.save!
end
如果此人未通过验证,则在事务中包装您的保存应该回滚保存电话号码。