0

我一直在試圖圍繞這些關聯包裹我的頭,我遇到了一點障礙。我正在製作的應用程序目前有2個模型:配料和配方。每個背後的邏輯如下:ActiveRecord協會,has_many_through

成分模型包含食品項目的信息,例如名稱,批量價格等。 食譜模型包含食譜的名稱,準備說明和成分列表(以及配方所需的金額)。

在深入研究了這裏的一些問題並觀看了一些railscast之後,我確定has_many_through關係可能對我正在嘗試做的事更好,因爲我想包含關於配方中的成分(所需的量)。

根據我在這方面的經驗有限,我想接近它是這樣的:

class Recipe < ActiveRecord::Base 
    has_many :ingredients_recipes 
    has_many :ingredients, :through => :ingredients_recipes 
end 

class Ingredient_Recipe < ActiveRecord::Base 
    belongs_to :ingredient 
    belongs_to :recipe 
end 

class Ingredient < ActiveRecord::Base 
    has_many :ingredients_recipes 
    has_many :recipes, :through => :ingredients_recipes 
end 

凡ingredients_recipes表將具有類似這樣的領域:recipe_id,ingredient_id,ingredient_qty(用於存儲如何許多特定的成分在配方中)

這是基於我上面提到的功能以代碼方式處理它的正確方法嗎?任何幫助將不勝感激。謝謝!

編輯 我也希望能夠從配方表單中添加這些新配料。這是否需要額外的東西,比如必須爲through表做accept_nested_attributes_,或者Rails會自己處理這些東西?

回答

0

:has_many through該方法效果最好,當一個對象可以具有零個或多個其他對象連接&有與每個連接相關聯的一些性質。

例如,就您的情況而言,您將在Connections表中存儲每種配料的數量以及recipe_id和ingredient_id。

所以,它看起來對我很好。 :)

但是,您應該考慮命名您的Ingredient_Recipe表更適當。

+0

什麼會是一個更合適的名字? – Onichan