获取"拥有"的所有记录所有这些其他记录

时间:2016-04-27 03:05:54

标签: ruby-on-rails

我的Recipe模型有{_ 1}}到Ingredients

RecipeIngredients
带有recipe_id和ingredient_id列的

RecipeIngredient模型。:

  has_many :recipe_ingredients
  has_many :ingredients, through: :recipe_ingredients

我的问题是,如何获得所有具有多种特定成分的食谱?

尝试:

食谱模型:

  belongs_to :recipe
  belongs_to :ingredient

当我scope :by_ingredient, -> ing { includes(:recipe_ingredients).where(recipe_ingredients: {ingredient_id: ing.id})} 时,它会正确返回所有有苹果的食谱,Recipe.by_ingredient(apple)正确返回所有有橙子的食谱。

但是当我像这样链接范围:Recipe.by_ingredient(orange)时,它会返回一个空数组,即使有配方有苹果和橙子。

1 个答案:

答案 0 :(得分:0)

好的,经过几个小时的搜索,我发现了方法merge

Recipe.by_ingredient(apple).merge(Recipe.by_ingredient(orange))

成功返回所有包含苹果和橙子的食谱。