レシピと呼ばれるテーブルと、材料と呼ばれる別のテーブルがあります。材料は、食品またはレシピに接続できます (1 つのレシピに他のレシピを含めることができます)。食べ物の部分で実装しましたが、レシピの部分を実装する方法がわかりません。現在のレシピで食材として選択されたレシピでレシピを保存するときに、このテーブルにデータを入力する必要がある、recipe_as_ingredients という名前の別のテーブルを作成しました。おそらく、保存するたびにテーブルを更新し、レシピで削除された場合は手動で行を削除する必要があります。それを実装するより良い方法はありますか?
モデルは次のとおりです。
class Recipe < ActiveRecord::Base
has_many :ingredients
end
class Ingredient < ActiveRecord::Base
belongs_to :element, :polymorphic => true
belongs_to :recipe
end
class Food < ActiveRecord::Base
has_many :ingredients, :as => :element
end
class RecipeAsIngredient < ActiveRecord::Base
has_many :ingredients, :as => :element
end
保存する前に関数で要素タイプを手動で設定したので、レシピを原料と同様にする必要がありますが、recipe_as_ingredient に原料に接続するためのレコードが含まれていることを確認してください。
self.element_id = numid.id
self.element_type = 'Food'
psレシピはマスターレコードと詳細レコードの両方であり、idフィールドは常にnilだったため、レコードの保存が不可能になったため、recipe_as_ingredients接続テーブルなしでレシピを接続できませんでした。