2015-07-21 244 views
1

我正在嘗試運行一個基本的應用程序,幫助捕獲食物項目列表中每個食物的營養信息。營養信息按每種成分儲存,並按各種成分的總和計算。與多對多的關係

這是我到目前爲止有:

有兩種型號食品和配料。每種食物都有許多成分,每種成分都用於許多食物。我想解決這個問題的方法是用一個表格來分解多對多的食譜,其中包含Food和pk Ingredient的食譜。但我的問題是,一個食譜可以有許多成分和一個成分有很多食譜。我如何將這兩張桌子分開是最好的方式,以便我可以拍攝食物和配料列表?或者有更好的方法來完成整個事情嗎?

舉例來說,食物有名稱,說明和成分有名稱,卡路里,營養素。

回答

2

您需要has_many_through關聯。

你會組織這樣的:

class Food < ActiveRecord::Base 
    has_many :recipes 
    has_many :ingredients, 
    through: :recipes 
end 

class Ingredient < ActiveRecord::Base 
    has_many :recipes 
    has_many :foods, 
    through: :recipes 
end 

class Recipe < ActiveRecord::Base 
    belongs_to :food 
    belongs_to :ingredient 
end 

這樣,你可以存儲內部Recipe

+0

這個我臉上的問題的其他信息是,我不能添加新的配方,因爲配方可以有許多成分。我仍然對如何填充這個模型感到困惑。 – Raj

+0

一個食譜會有1個食物和1種成分,它仍然是多對多,但是有更多的字段 – Nermin

+0

我該如何填充配方表,說雞肉沙拉,雞肉,生菜和番茄作爲配料?我會有3個參賽項目,每個都有食品雞肉沙拉和從雞肉到番茄的各種食材。該表是否會自動填充所有可能的配料和食品組合,或者是否需要手動添加? – Raj