mam 2 modele z zagnieżdżonego danych:update_attributes powraca zawsze prawdziwe, nawet jeśli nested_attributes nie obowiązują
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
Dokonując zagnieżdżone rekordy, poprawna walidacja odbywa się, na przykład, jeśli dane w zagnieżdżonych modelu nie poprawne , więc polecenia:
@tender = Tender.new(params[:tender])
@tender.save
zwraca false
ale jeśli dane aktualizacji:
@tender = Tender.find(params[:id])
@tender.update_attributes(params[:tender])
zawsze eturns prawda
dane Nawet jeśli zagnieżdżone nie obowiązuje. Tutaj dane i aktualizacje Valenta rodziców i jeśli dane rodziców nie są prawidłowe, zwracają wartość false, jeśli jeden z rekordów zagnieżdżonych jest nieprawidłowy, są one ignorowane podczas zapisywania, a update_attributes zwraca true. Czy istnieje możliwość sprawdzenia danych dotyczących ważności w czasie aktualizacji całego zagnieżdżonego łańcucha danych? Dziękuję za odpowiedź.
Używam: Ruby 1.8.7 ROR 3.0.9 Mongoid 2.0.1
To samo dzieje się na MySQL. Rails 3.0.11 –
Czy próbowałeś kaskadowania callbacków? – Baruch