Просто начинаю работать с ActiveRecord и пытаюсь понять, как мне поступить с определенным запросом.Это было бы эквивалентно вводу списка ингредиентов и сопоставлению их с рецептами, которые эти ингредиенты позволят вам сделать.Как будет выглядеть хорошая схема и как это будет сделано?
ОБНОВЛЕНИЕ:
Итак, как я это делаю, у меня есть две модели- ингредиенты и рецепты, которые связаны отношением has_and_belongs_to_many.Я использую следующий код, чтобы получить вывод, который я описал, но он кажется слишком окольным.Если бы кто-нибудь мог предоставить какую-либо информацию о том, как оптимизировать / получить это в одном запросе, было бы здорово.
recipes = []
ingredients = ['i2', 'i1']
Recipe.uniq.joins(:ingredients).where("ingredients.name in (?)", ingredients).each do |recipe|
included_ingredients = recipe.ingredients.take_while { |i| ingredients.include?(i.name) }
recipes << recipe if recipe.ingredients.size == included_ingredients.size
end