Я застрял на попытке исправить проблему. У меня есть обновление модели с двумя уровнями глубины вложенных полей.Вложенные атрибуты не сохраняются при обновлении объекта
У меня есть довольно простая модель
class Flight < Plan
attr_accessible :travels_attributes
has_many :travels, :class_name => "FlightTravel", :foreign_key => "plan_id", :dependent => :destroy
accepts_nested_attributes_for :travels, :allow_destroy => true
End
class FlightTravel < ActiveRecord::Base
attr_accessible :segments_attributes
has_many :segments, :class_name => "FlightSegment", :dependent => :destroy, :foreign_key => "flight_travel_id"
accepts_nested_attributes_for :segments, :allow_destroy => true
end
class FlightSegment < ActiveRecord::Base
end
Теперь, когда я пытаюсь вызвать flight.update_attributes (: travels_attributes => {...}) в консоли будет правильно обновить объект с нужными значениями.
Я вызываю flight.save, и он ничего не делает, и по какой-то причине просто пропускает обновление вложенных ассоциаций. Что я делаю не так ?
Есть ли какие-либо проверки, которые могут быть неудачными? Это также поможет увидеть фактические вызовы, которые терпят неудачу, возможно, с упрощенными данными. Ваш вызов update_attributes в консоли должен быть сохранен в базе данных. Я предполагаю, что использование: travel_attributes [sic] в качестве ключа является опечаткой. – austinfromboston
Да, извините, должно быть, travels_attributes. Обновился. Na не проверяется, потому что он даже не попадает на обратный вызов before_validation в классе FlightSegment –
Можете ли вы сделать это в консоли rails, а затем посмотреть, не потерял ли flight.errors после #save? –