【发布时间】:2018-08-17 12:54:21
【问题描述】:
我有一个食谱模型,它通过 recipe_ingredients 包含许多成分。
我怎样才能有效地获得所有的食谱
- 吃黄油和巧克力
- 吃黄油但不吃巧克力
- 既没有黄油也没有巧克力
会有数百万个食谱,所以我希望只用一个查询就能得到我需要的结果,而不必在第一个条件的结果中进行选择或拒绝。 喜欢:
Recipe.joins(:ingredients)
.where(ingredients: { name: 'chocolate' })
.select{ |recipe| recipe.ingredients.pluck(:name).include?('butter') }
另外,当用户选择超过 2 种成分时,我需要它来工作。 我愿意以不同的方式存储数据,如果这样可以提高搜索效率 - 或者使用直接的 sql 查询。
谢谢
【问题讨论】:
标签: sql ruby-on-rails rails-activerecord