у меня есть:PostgreSQL: выберите записи, где все связанные с ним состояние записи матча
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 })
Но это будет получить, как где по крайней мере, один б соответствует условиям, а не все.
Идеи?
Неплохая идея, но PG слишком хныкает о том, что вы положили insde, оператор WHERE (ActiveRecord :: StatementInvalid: PG :: GroupingError: ERROR: функции агрегации запрещены в ГДЕ) – nicooga
@nicooga Хм. Я не знаю конкретного синтаксиса, но я должен предположить, что проще проверить 'count (false) == 0', чем' count (true) == count (*) '. – meagar