У меня есть 2 модели с вложенными данными:update_attributes возвращает всегда верно, даже если nested_attributes являются недопустимыми
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])
всегда eturns правда
Даже если вложенные данные не действительны. Здесь данные родительских данных и valids, и если данные родителей недействительны, возвращается false, если одна из вложенных записей недействительна, они игнорируются при сохранении и update_attributes возвращает true. Есть ли возможность проверить данные на достоверность во время обновления всей вложенной цепочки данных? Спасибо, что ответили.
Я использую: Руби 1.8.7 RoR 3.0.9 Mongoid 2.0.1
То же самое происходит в MySQL. Rails 3.0.11 –
Вы пробовали каскадные обратные вызовы? – Baruch