У меня есть эти 4 модели, связанные друг с другом посредством ассоциаций has_many, принадлежит_. Основные 2 (рецепт, ингредиент). Другие 2 хранят дополнительную информацию, основанную на предыдущих двух.
class Recipe
has_many :ingredients, :through => :prescriptions
has_many :prescriptions
end
class Ingredient
has_many :recipes, :through => :prescriptions
has_many :prescriptions
has_many :stocks
end
class Stock
belongs_to :ingredient
end
class Prescription
belongs_to :recipe
belongs_to :ingredient
end
Я пытаюсь получить рецепты, которые есть в наличии на складе, то есть Recipe.joins (: ингредиенты) .joins (: акции), но я получаю ошибку:
ActiveRecord::ConfigurationError: Association named 'stock' was not found; perhaps you misspelled it?
SQL-запрос, который я пытаюсь выполнить:
SELECT "recipes".* FROM "recipes"
INNER JOIN "prescriptions"
ON "prescriptions"."recipe_id" = "recipes"."id"
INNER JOIN "ingredients"
ON "ingredients"."id" = "prescriptions"."ingredient_id"
---
INNER JOIN "stocks"
ON "stocks"."ingredient_id" = "ingredients"."id"
---
последний "INNER JOIN" - это то, что я не могу интерпретировать код в rails 3. Есть идеи?
Спасибо,