Связанные записи не сохраняются для дочерней модели - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю над проектом, который использует движок Solidus.Однако мы хотим изменить модели, в частности, создавая новые модели, которые наследуются от моделей двигателя по умолчанию.

Мы решили сделать это, а не полностью перезаписывать модели по умолчанию или делать декоратор, чувствуя, что декоратор был слишком грязным, но переписывание было бы слишком сложно поддерживать для обновлений, и поэтому попытался найти золотую середину,но независимо, это путь, который мы выбрали.

Проблема в том, что в нашей измененной модели, когда она связана с другой измененной моделью, она не сохраняет должным образом связанные данные через контроллеры.

Например: наша модель Store::Product (наследует от Spree::Product) имеет ассоциации, установленные следующим образом:

has_many :variants, :class_name => "Store::Products::Variant", :allow_destroy => true
accepts_nested_attributes_for :variants, :allow_destroy => true

Когда мы отправляем variants_attributes в данных формы, этоданные формы не сохраняются, даже если: 1) если мы вызовем @product.variants.each {|v| v.save} в Store::Product модель after_save cb, он успешно сохранит все варианты (по крайней мере, для меня это означает, что с самими данными все в порядке)или проверки).2) Нет ошибок в объектах экземпляра связанных вариантов.3) Если мы пропустим:

has_many :variants, :class_name => "Store::Products::Variant", :allow_destroy => true
accepts_nested_attributes_for :variants, :allow_destroy => true

(т.е. просто оставим модель Spree::Variant по умолчанию в качестве has_many для нашей Store::Product модели), форма также будет работать нормально.

Все, что происходит, - это то, что данные продукта сохраняются и затем успешно перенаправляются туда, куда мы установили контроллер, как будто ничего не пошло не так.

ОБНОВЛЕНИЕ: Это верно ТОЛЬКО для update вызовов (create работает нормально).

...