关联记录未保存为子模型

时间:2019-02-12 11:06:21

标签: ruby-on-rails spree solidus

我正在研究一个使用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 cb中调用after_save,它将成功保存所有变体(至少向我表明数据本身或验证没有问题)。 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正常)。

0 个答案:

没有答案