迭代哈希散列以保存嵌套属性

时间:2016-01-22 00:25:59

标签: ruby-on-rails

我从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

但由于某些原因,这似乎无法正常工作

1 个答案:

答案 0 :(得分:0)

假设您正在使用Rails&#39;在活动模型关联中使用的build方法,build不会保存到数据库。

参见http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html 它写着:

  

build_association(attributes = {})返回一个新对象   已使用属性实例化并链接的关联类型   通过外键到达此对象,但尚未保存。