Связанные записи не сохраняются для дочерней модели

Я работаю над проектом, использующим движок 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::Productafter_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 работает нормально).

🤔 А знаете ли вы, что...
Один из наиболее известных гемов - Devise, который предоставляет готовое решение для аутентификации и управления пользователями.


39