2016-07-11 12 views
2

で表に参加しましょう。のRuby on Railsのは、私は現在、2つのモデル、<code>List</code>と<code>Item</code>を持っている数量

現在、私は次のコードを使用してリストに項目を追加することができます。

list.items.new(id: item.id) 

をこれが正常に動作しますが、私はそれがリストに追加されたときにアイテムの数量を指定したいと思います。

したがって、ジョインテーブルでは、多くの項目が必要であることを示す量を格納する別の列quantityを追加しました。数量欄を追加した後、私はアイテムと共に量を節約するために、次のコードを試みた:

list.items.new(id: item.id, quantity: 3) 

しかし、私は試した方法が正しくないと思われるのでActiveModel::UnknownAttributeError: unknown attribute 'quantity' for Item.

前記エラーを受信し、数量の項目をリストに追加できるようにするにはどうすればよいですか?

答えて

3

has and belongs to manyの代わりにhas many throughの関係を使用する必要があります。これには、既存の2つのモデルの関係を変更するだけでなく、3つ目のモデルを作成することも含まれます。あなたはさらに

class List < ApplicationRecord 
    has_many :items_lists 
    has_many :items, through: :items_lists 
end 

class Item < ApplicationRecord 
    has_many :items_lists 
    has_many :lists, through: :items_lists 
end 

class ItemsList < ApplicationRecord 
    belongs_to :item 
    belongs_to :list 
end 

次の2つのレコードの主キーに加えて、データを格納しているため、多対多のために、この関係を利用したい( has_many_throughドキュメント)、あなたの items_listsテーブルは list_iditem_idを持っている必要があります。あなたは結局電話を終了するだろう

list.items.new(item_id: item.id, quantity: 3) 
関連する問題