我需要通过相关模型查询我的模型。
伪代码: @drinks = Drink.where(drink.ingredients are in cabinet.ingredients)
饮料模型
class Drink < ActiveRecord::Base
attr_accessible :name
has_many :recipe_steps, :dependent => :destroy
has_many :ingredients, through: :recipe_steps
end
成分模型
class Ingredient < ActiveRecord::Base
attr_accessible :name
has_many :recipe_steps
has_many :drinks, through: :recipe_steps
has_many :cabinet_ingredients
belongs_to :cabinet
end
用户模型
class User < ActiveRecord::Base
has_one :cabinet
end
编辑:正如我所建议的那样
Drink.joins(ingredients: :cabinet_ingredients)
然而,当我从我的柜子和/或多个用户喝一种含有2种成分的饮料时,它会返回同一饮料的多个记录。
我只需要退回一份饮料记录..此外,如果所有食材都在橱柜中配对,我只需要退回饮料
答案 0 :(得分:1)
我将如何做到这一点。如果所有成分都存在于给定的橱柜配料中,请选择一种饮料。我知道它不像您的伪代码那样使用Drink.where
,但它可以完成工作。
Drink.all.select{|drink| drink.ingredients.all?{|drink_ingredient| cabinet.ingredients.include?(drink_ingredient)}}
答案 1 :(得分:0)
试试这个。
Drink.joins(ingrediants: :cabinet_ingredients).uniq