0

我一直在阅读大量 StackOverflow 文章,试图解决一个特别棘手的 Rails 3 连接查询,但无济于事 - 所以我问了一个新问题!

我有一个名为“User”的模型,它通过多态关联具有多个“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 关联计数子行),但似乎没有什么完全匹配。)

谢谢!

4

1 回答 1

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
于 2013-08-11T04:14:04.927 回答