Rails 3:如何获取 id 不在给定列表中的所有帖子?
要获取 publisher_id
等于 10、16 或 17 的所有帖子,我这样做:
Post.where(:publisher_id => [10, 16, 17])
如何获取 publisher_id
不等于 的所有帖子10、16 或 17(即除这三个之外的所有可能的 ID)?
To get all posts with publisher_id
equals to 10, 16, or 17, I do:
Post.where(:publisher_id => [10, 16, 17])
How would I get all posts with publisher_id
not equals to 10, 16, or 17 (i.e. all possible ids besides those three) ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
只需执行:
Just perform a :
在 Rails 4 中,我们可以像下面这样做,
它将生成如下 SQL
in rails 4 we can do like below
it will generate SQL like below
未经测试,但应该像(使用metawhere gem):
Untested, but should be like (using metawhere gem):
使用 Rails 3 中撒有 Arel 的“纯”ActiveRecord 语法,您可以执行以下操作:
Using "pure" ActiveRecord syntax sprinkled with Arel using Rails 3 you can do something like this:
我使用过的巧妙解决方案:
Neat solution I've used:
此页面上的每个答案都是错误的,因为这些答案都不能处理所有数组情况,特别是只有一个元素的数组。
下面是一个使用此页面上任何“所谓”解决方案都会失败的示例:
此页面上唯一实际上处于正确轨道并处理这个非常重要的情况的答案是@都铎康斯坦丁的。但问题是他实际上并没有展示一种使用他的方法来解决OP发布的真实抽象示例问题的“方式”(而不仅仅是使用硬编码的数字)。
这是我的解决方案,用于在给定要排除的 id 数组的情况下动态查找不在 Activerecord 关联中的 id,该解决方案将与 n 个元素的数组一起使用(...包括 n=1 和 n=0)
Every single answer on this page is wrong because none of these answers take care of ALL array cases, Especially arrays that have only one element.
Here is an example that will FAIL using any of the 'so called' solutions on this page:
The only answer on this page that is actually on the right track and takes care of this very important case is @Tudor Constantin's. But the problem is he didn't actually show a 'way' of using his methodology to solve the real abstract example question the OP posted (not just using the hard-coded numbers).
here is my solution to dynamically find the ids not in an Activerecord association given an array of ids to exclude, that will work with an array of n elements (...including n=1 and n=0)