Как я могу получить всех родителей, у которых нет детей или детей, если его «состояние» отличается от «одобрено»?Запрос ассоциации на основе дочернего атрибута
Parent.includes(:children).where.not(children: { status: 'approved' })
"SELECT \"parents\".* FROM \"parents\" INNER JOIN \"children\" ON "children\".\"parent_id\" = \"parents\".\"id\" WHERE \"children\".\"state\" = 'approved'"
возвращает только родители с детьми с status
отличному от approved
, но игнорирует родителей, что не имеет детей
Parent.includes(:children).where(children: { id: nil })
"SELECT \"parents\".\"id\" AS t0_r0, \"parents\".\"date\" AS t0_r1, ........, \"parents\".\"slug\" AS t0_r33, \"children\".\"id\" AS t1_r0, \"children\".\"parent_id\" AS t1_r1, \"children\".\"request_state\" AS t1_r8 FROM \"parents\" LEFT OUTER JOIN \"children\" ON \"children\".\"edition_id\" = \"parents\".\"id\" WHERE \"children\".\"id\" IS NULL"
возвращает только родители без детей
Какого Rails версии вы используете? –
Rails 4.2.5, добавлен тег, ty –
Вы проверили вопросы о запросе 'или', [как этот] (http://stackoverflow.com/questions/7976358/activerecord-arel-or-condition)? –