我的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)
时,它会返回一个空数组,即使有配方有苹果和橙子。
答案 0 :(得分:0)
好的,经过几个小时的搜索,我发现了方法merge:
Recipe.by_ingredient(apple).merge(Recipe.by_ingredient(orange))
成功返回所有包含苹果和橙子的食谱。