有没有一种简单易行的方式来做这样的事情?
class People < ActiveRecord::Base
has_many :babies
scope :with_babies -> { where(babies.count > 0) }
end
在SO上有很多类似的问题,但它们都依赖于复杂的唯一SQL语句。有没有简单的rails方式呢?
答案 0 :(得分:1)
您可以使用SQL join + distinctness来实现简单方法。它可能会引入问题,以防您希望将来根据此情况进行非独特查询,但我不认为这种情况经常发生,所以这应该让您开始。它确实提供了比添加自定义SQL更好的可读性。
scope :with_babies, -> { joins(:babies).distinct }