我有:
class A < ActiveRecord::Base
has_many :abs
has_many :bs, through: :abs
end
class AB
belongs_to :a
belongs_to :b
end
class B < ActiveRecord::Base
has_many :abs
has_many :as, through: :abs
# and has boolean db field :matches
end
我想为A
实现一个范围,该范围检索所有相关的Bs,其中matches=true
。通常,我会这样做:
A.joins(:bs).where(bs: { matches: true })
但是这将检索符合条件的至少一个b,而不是所有的b。有什么想法吗?
count(false) == 0
要比检查count(true) == count(*)
更容易。 - user229044