我从params获得了哈希哈希。看起来像这样:
{"0"=>{"product_attribute_id"=>"4"}, "1"=>{"product_attribute_id"=>"7"}}
现在基本上我想要做的就是这样:
class Cart < ApplicationRecord
has_many :line_items, dependent: :destroy
def add_product(product_id, instruction, attributes)
current_item = line_items.find_by(product_id: product_id)
if current_item
current_item.quantity += 1
else
current_item = line_items.build(product_id: product_id, instruction: instruction)
attributes.each do |key, value|
current_item.line_item_attributes.build(product_attribute_id: value['product_attribute_id'])
end
end
current_item
end
但由于某些原因,这似乎无法正常工作
答案 0 :(得分:0)
假设您正在使用Rails&#39;在活动模型关联中使用的build
方法,build
不会保存到数据库。
参见http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html 它写着:
build_association(attributes = {})返回一个新对象 已使用属性实例化并链接的关联类型 通过外键到达此对象,但尚未保存。