我是铁杆的新手,甚至是红宝石,所以我在解决这个问题上遇到了一些麻烦。
我想找到两个查询之间的区别。此特定查询应返回单个记录,因为我已将其设置为使Recipe缺少配方中的一个ID。 目前的代码:
q = Recipe.all - Recipe.where(recipe_id: recipes)
其中食谱是一组ID。
根据我对该语言的有限理解,如果Recipe.all和Recipe.where都返回数组,这将有效。
我花了一些时间在网上搜索,没有任何东西可以帮助我。
我尝试过的其他事情:
q = [Recipe.all] - [Recipe.where(recipe_id: recipes)]
q = Recipe.where.not(recipe_id: recipes) # Wouldn't work because the array is the one with the extra id
虽然两者都没有帮助。
答案 0 :(得分:5)
试试这个:
q = Recipe.where('recipe_id NOT IN (?)', recipes)
答案 1 :(得分:1)
原来我问的是错误的问题。
由于ID数组是带有额外元素的数组,而不是数据库查询,我应该一直在比较它与查询的区别。
我的回答如下:
q = recipes - Recipe.where(recipe_id: recipes).ids
返回缺少的ID。
答案 2 :(得分:0)
如果您使用的是Rails 4,则可以使用not query method
q = Recipe.where.not(id: recipes)
这将生成以下查询:
SELECT "recipes".* FROM "recipes" WHERE ("recipes"."id" NOT IN (12, 8, 11, 5, 6, 7))