gpt4 book ai didi

ruby-on-rails - update_attributes 始终返回 true,即使 nested_attributes 无效

转载 作者:可可西里 更新时间:2023-11-01 09:15:56 26 4
gpt4 key购买 nike

我有 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

制作嵌套记录时,会进行正确的验证,例如,如果嵌套模型中的数据不正确,则命令:

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

返回错误

但是如果更新数据:

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

始终为真

即使嵌套数据无效。这里 parent 的数据更新并有效,如果 parent 的数据无效则返回 false,如果嵌套记录之一无效,当您保存并且 update_attributes 返回 true 时,它​​们将被忽略。是否有机会在更新所有嵌套数据链时检查数据的有效性?感谢您的回复。

我正在使用: ruby 1.8.7ROR 3.0.9Mongoid 2.0.1

最佳答案

请检查每个模型的“有效”功能以进行验证。请按照以下代码在您的代码中添加代码:

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

关于ruby-on-rails - update_attributes 始终返回 true,即使 nested_attributes 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com