Rails включает в себя условия

Возможно в Rails> 3.2 добавить условия в оператор соединения, сгенерированныйincludes метод?

Допустим, у меня есть две модели, Персона и Примечание. У каждого человека есть много заметок, и каждая заметка принадлежит одному человеку. Каждая заметка имеет атрибутimportant.

Я хочу найти всех людей, загружающих только заметки, которые важны. В SQL это будет:

SELECT *
FROM people
LEFT JOIN notes ON notes.person_id = people.id AND notes.important = 't'

В Rails единственный похожий способ сделать это - использоватьincludes (нота:joins не будет предварительно загружать заметки) вот так:

Person.includes(:notes).where(:important, true)

Однако это сгенерирует следующий SQL-запрос, который возвращает другой набор результатов:

SELECT *
FROM people
LEFT JOIN notes ON notes.person_id = people.id
WHERE notes.important = 't'

Обратите внимание, что первый набор результатов включает всех людей, а второй - только людей, связанных с важными заметками.

Также обратите внимание, что: условия устарели с 3.1.

Ответы на вопрос(7)

Ваш ответ на вопрос