0

我正在开发一个使用 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)如果我们调用模型cb @product.variants.each {|v| v.save},它会成功保存所有变体(至少向我表明数据没有任何问题自己或验证)。2) 关联变体的实例对象没有错误。3)如果我们省略:Store::Productafter_save

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工作正常)。

4

0 回答 0