我一直在阅读一堆StackOverflow文章试图找出一个特别棘手的Rails 3加入查询无济于事 - 所以我问了一个新问题!
我有一个名为“User”的模型,它通过多态关联has_many“Checks”(Check上的实际列是“target_type”和“target_id”)。 Check有一个名为“type”的字符串列,表示检查的原因。像这样:
-----------------------------------------------------
id | target_type | target_id | type |
-----------------------------------------------------
1 User 1 type_1
2 User 2 type_2
我想找到所有没有使用集合类型与之关联的支票的用户 - 所以这是一个加入和计数,我想。
因此,例如,我希望能够进行查询以查找没有“type_1”检查的所有用户,并且应该返回ID为#2的用户。
我将如何做到这一点?
(我一直在关注计数和分组的所有内容(例如Rails has_many association count child rows),但似乎没有什么匹配。)
谢谢!
答案 0 :(得分:0)
您可以尝试:
class Merchant < ActiveRecord::Base
...
def self.non_fraudulent
includes(:fraud_checks).group("#{self.table_name}.id").having("SUM(CASE WHEN fraud_checks.type = 'fraudulent_ip' THEN 1 ELSE 0 END) = 0")
end
end