2016-07-18 65 views
0

我很困惑如何將多個標籤分配給一個菜單項。one_to_many關係混亂Rails

如果我有一個名爲'Tacos'的新菜單項,我希望這個菜單項具有標籤'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上實現它。知道你知道這個名字應該更容易找到正確的文檔。 – Leito

+0

你不覺得你正在做一對多的手段嗎?如果一個菜單項有很多標籤,那麼你如何傳遞兩個標籤的菜單項ID? – uday

+1

這應該是多對多嗎? – 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

謝謝@RaVeN。我仍然困惑如何分配多個實例? food_two = MenuItem.create(名稱: 「牛排」) MenuTag.create(名稱: 「蛋白質」,MENU_ITEM:food_one,food_two) – user3007294

+0

@ user3007294看到編輯 – siegy22

+0

謝謝!幫了很多 – user3007294