即使nested_attributes无效,update_attributes也始终返回true

我有2个嵌套数据模型:

class Goodtender include Mongoid::Document include Mongoid::Timestamps field :name field :count references_many(:offerprices, :autosave => true) accepts_nested_attributes_for :offerprices, :allow_destroy => true, :reject_if => :all_blank validates_presence_of :name, :message => "Invalid" validates_numericality_of :count, :message => 'Invalid' validates_associated :offerprices, :message => 'Invalid' end class Offerprice include Mongoid::Document include Mongoid::Timestamps field :summ field :date_delivery, :type => DateTime field :note referenced_in :goodtender, :class_name => 'Goodtender' validates_presence_of :date_delivery, :message => "Invalid" validates_numericality_of :summ, :message => 'Invalid' end 

在创建嵌套记录时,会进行正确的validation,例如,如果嵌套模型中的数据不正确,那么命令:

 @tender = Tender.new(params[:tender]) @tender.save 

返回false

但如果更新数据:

 @tender = Tender.find(params[:id]) @tender.update_attributes(params[:tender]) 

永远是真的

即使嵌套数据无效。 此处父级的数据更新和值以及父级数据无效时返回false,如果其中一个嵌套记录无效,则在保存并且update_attributes返回true时将忽略它们。 是否有机会在更新所有嵌套数据链时检查有效性数据? 谢谢你的回复。

我正在使用:Ruby 1.8.7 RoR 3.0.9 Mongoid 2.0.1

请检查每个型号的“有效”function以进行validation。 请在代码中添加以下代码:

 @tender = Tender.find(params[:id]) 
@tender.fieldname=params[:name]
if @tender.valid?
@tender.save
end