回答
在Rails 4.x的(參見http://edgeguides.rubyonrails.org/active_record_querying.html#not-conditions)
GroupUser.where.not(user_id: me)
在Rails 3.x的
GroupUser.where(GroupUser.arel_table[:user_id].not_eq(me))
要縮短長度,你可以存儲GroupUser.arel_table
在一個變量,或者如果使用模型內GroupUser
本身,例如,在scope
中,可以使用arel_table[:user_id]
而不是GroupUser.arel_table[:user_id]
條的Rails 4.0的語法信貸@jbearden's answer
你有什麼幾乎是一個很好的Rails 3的做法,我認爲。
軌道4
GroupUser.where.not(user_id: me)
你應該總是包括在SQL查詢中的表名與協會打交道時。
事實上,如果另一個表具有user_id
列,並且您加入了這兩個表,那麼在SQL查詢中(即麻煩),您將有一個含糊不清的列名稱。
所以,在你的榜樣:
GroupUser.where("groups_users.user_id != ?", me)
或者多一點冗長:
GroupUser.where("#{table_name}.user_id IS NOT ?", me)
請注意,如果您使用的是哈希,您不必擔心由於Rails需要照顧它給你:
GroupUser.where(user: me)
在Rails 4,如@ dr4k3說,查詢方法not
具有b個EEN補充說:
GroupUser.where.not(user: me)
軌道4,5:
如果你想使用都不相等,平等,你可以使用:
user_id = 4
group_id = 27
GroupUser.where(group_id: group_id).where.not(user_id: user_id)
如果你想使用各種運營商(即。 >
,<
),在某些時候,你可能希望符號切換到以下幾點:
GroupUser.where("group_id > ? AND user_id != ?", group_id, user_id)
'GroupUser.where(group_id:group_id).where.not(user_id:user_id)''怎麼辦? – 2014-12-15 18:59:02
@EnricoCarlesso感謝發佈。我更新了我的答案,以包含您的建議。謝謝。 – 2014-12-16 18:47:43
在Rails 3,我什麼都不知道票友。但是,我不確定您是否知道,您的不等於(user_id)NULL值不匹配。如果你想這樣做,你將不得不這樣做:
GroupUser.where("user_id != ? OR user_id IS NULL", me)
- 1. Rails的查詢不等於
- 2. 查找Rails模型的允許屬性
- 3. Rails在多個模型中查找
- 4. Rails:用連接模型查找 - 如何?
- 5. 在Rails中,如何通過「不等於」來查找記錄
- 6. Rails模型:驗證數字屬性不等於零
- 7. 控制器不等於Rails中的模型名稱
- 8. 如何查找早於特定時間創建的Rails模型?
- 9. 查找不等於圖案的文件
- 10. 查找記錄,其中和「不等於」
- 11. rspec&rails 3找不到模型對象
- 12. 覆蓋在Rails中查找模型不會影響作用域查找
- 13. 查詢與類型MongoDB中不等於
- 14. Rails的範圍不等於
- 15. Rails Postgres:查詢在「三角形模型」中查找相應模型
- 16. Rails:從不同視圖查詢模型
- 17. 查看不識別模型屬性? Rails
- 18. Ruby on Rails - 找到值等於NaN
- 19. 關於Rails模型關聯
- 20. Rails 3 - ActiveRecord查找當相冊名稱等於
- 21. 查找記錄陣列的長度等於 - Rails 4
- 22. Rails等同於django模型mixin讓東西幹掉
- 23. 查詢多個Rails模型
- 24. 如何查找關聯計數等於0的模型的所有記錄?
- 25. 使用查找模型內的模型
- 26. Rails模型屬於任一模型或另一個模型
- 27. 通用類型不等於
- 28. Rails模型屬於模型,屬於模型,但我想用另一個名字
- 29. 找不到模塊'express';找不到名稱'process';等等
- 30. 等於或等於兩個值的查找值
在協會裏怎麼樣? - has_many:group_users, - > {where.not(status:「Declined」)},通過:: groups,foreign_key:「user_id」 – ajbraus 2014-03-29 14:57:23
作爲一個方面說明,它也可以很好地鏈接:'GroupUser.where(other_condition:true ).where.not(user_id:user_id)' – 2014-12-15 19:00:07