Rails 3: 我在产品模型和成分模型之间有HABTM关系。我有一堆孤立的成分,我想从数据库中删除,所以我需要查询这些成分,以删除它们。我猜有一种简单的方法可以做到这一点。有人可以帮帮我吗?我希望这可以工作,但我得到一个未定义的列错误
Ingredient.joins(:products).where(products: [])
答案 0 :(得分:1)
products
很可能不是您的任何一个列的列。我认为这样的事情会起作用(假设产品有name
,否则替换为实际存在的任何一列):
Ingredient.joins(:products).where("products.name IS NULL")
答案 1 :(得分:1)
查看here - >
这看起来是正确的:
Ingredient.joins('LEFT JOIN product_ingredients ON ingredients.id = product_ingredients.ingredient_id').where('product_ingredients.ingredient_id IS NULL').all
答案 2 :(得分:0)
Ingredient.all.map { | ingredient | ingredient.products.empty? }
这应该映射具有该空关系的所有成分。你也可以尝试:
Ingredient.all.map { | ingredient | ingredient.products.count > 0 }
希望它有所帮助!
答案 3 :(得分:0)
找到答案here
请注意,SQL查询在连接表上执行左JOIN,在本例中为'product_ingredients'
Ingredient.joins('LEFT JOIN product_ingredients ON ingredients.id = product_ingredients.ingredient_id').where('product_ingredients.ingredient_id IS NULL').all