2016-07-18 5 views
0

1つのメニュー項目に複数のタグを割り当てる方法が混乱しています。one_to_many関係の混乱Rails

「タコス」という名前の新しいメニューアイテムがある場合は、このメニューアイテムに「Spicy」タグと「Protein」タグが割り当てられます。

同様に、 'Steak'という名前の新しいメニュー項目がある場合、この項目に同じ 'Protein'タグを適用したいと思います。これは可能ですか?

あなたがそれを使用する方法
class MenuTag < ActiveRecord::Base 
    belongs_to :menu_item 
end 

class MenuItem < ActiveRecord::Base 
    has_many :menu_tags 
end 

food_one = MenuItem.new(name: "Tacos", tags: NOT SURE WHAT GOES HERE???) 
food_two = MenuItem.new(name: "Steak", tags: NOT SURE WHAT GOES HERE???) 

spicy = MenuTag.new(name: "Spicy", menu_item_id: 1) 
protein = MenuTag.new(name: "Protein, menu_item_id: 1,2) <---- can I assign two id's here??? 
+0

あなたがしたいものは、hasと呼ばれ、多くの(HABTM)関係に属します。そして、それをRailsに実装するには2つの方法があります。適切な文書を見つけるのが簡単になるはずです。 – Leito

+0

1対多の意味を逆にしていると思いませんか?メニュー項目に多数のタグがある場合、タグの2つのメニュー項目IDをどのように渡すことができますか? – uday

+1

これは多対多であるべきですか?ありがとう@RaVeN。 – user3007294

答えて

1

food_one = MenuItem.create(name: "Tacos", menu_tags: [menu_tag_1, menu_tag_2, ...]) 
food_one.menu_tags.create(name: "Spicy") 

または他の方法で回避:

MenuTag.create(name: "Protein", menu_item: food_one)# using instances 
MenuTag.create(name: "Protein", menu_item_id: food_one.id) # using ids 

注:あなたがそれらに関連する前に作成したアイテムを持っている必要があります。

+0

私はまだ複数のインスタンスを割り当てる方法が混乱していますか? food_two = MenuItem.create(名称: "ステーキ") MenuTag.create(名称: "タンパク質"、MENU_ITEM:food_one、food_two) – user3007294

+0

user3007294 @編集 – siegy22

+0

をご覧いただきありがとうございます!!!多くの助けを借りて – user3007294