Я пытался уложить в голове эти ассоциации и столкнулся с небольшой загвоздкой. Приложение, над которым я работаю, на данный момент имеет 2 модели: Ingredient и Recipe. Логика каждого из них следующая:
Модель Ingredient содержит информацию о продуктах питания, такую как название, оптовая цена и т. д. Модель Recipe содержит название рецепта, инструкцию по приготовлению и список ингредиентов (вместе с количеством, необходимым для рецепта).
Изучив некоторые вопросы здесь и просмотрев несколько рельсовых передач, я решил, что отношения 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
Где таблица ингредиентов_рецептов будет иметь поля, подобные этому: recipe_id, ингридиент_ид, ингридиент_количество (для хранения того, сколько определенного ингредиента находится в рецепте)
Это правильный подход к коду, основанный на функциональности, о которой я упоминал выше? Любая помощь будет принята с благодарностью. Спасибо!
Изменить Я также хотел бы иметь возможность добавлять эти новые ингредиенты в рецепт из формы рецепта. Потребуется ли для этого что-то дополнительное, например, выполнение accepts_nested_attributes_для сквозной таблицы, или Rails справится с этим самостоятельно?