我有 3 个表 ( products
, custom_attribute
, attribute_value
) 需要链接在一起。我有attribute_value_maps
一张有product_id
,custom_attribute_id
和的桌子attribute_value_id
。
我的产品型号accepts_nested_attributes_for :attribute_value_maps
和accepts_nested_attributes_for :attribute_values
.
我的产品表单有一个新的属性值字段,如下所示:
<input id="product_attribute_values_attributes_1_custom_attribute_id" name="product[attribute_values_attributes][1][custom_attribute_id]" value="1" type="hidden">
<input id="product_attribute_values_attributes_1_attribute_value_name" name="product[attribute_values_attributes][1][name]">
控制器是基本的@product.update_attributes(paras[:product])
。
这会attribute_value
正确创建记录,但attribute_value_map
记录会保存为 nil custom_attribute_id
。
问题1:有没有一种简单的方法可以让attribute_value_map
记录以custom_attribute_id
这种方式正确保存?
问题 2:假设已经有一个地图记录,如果我添加一个带有 name 的输入product[attribute_values_attributes][1][attribute_value_map_id]
,它只会对我大喊大叫,说这不是一个有效的字段。如何在创建新的属性值时更新现有的地图记录?
编辑 1:要求提供更多详细信息
产品型号:
has_many :custom_attributes, :through => :attribute_value_maps
has_many :attribute_value_maps, :dependent => :destroy
has_man :attribute_values, :through => :attribute_value_maps
accepts_nested_attributes_for :attribute_value_maps
accepts_nested_attributes_for :attribute_values
custom_attribute 模型
has_many :attribute_value_maps
属性值模型
belongs_to :custom_attribute
has_many :attribute_value_maps
属性值映射模型
belongs_to :product
belongs_to :custom_attribute
belongs_to :attribute_value