刚开始使用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