Szyny zawierają warunki

Czy jest możliwe w Railsach> 3.2 dodawanie warunków do instrukcji łączenia generowanej przezincludes metoda?

Powiedzmy, że mam dwa modele, Person i Note. Każda osoba ma wiele notatek, a każda notatka należy do jednej osoby. Każda notatka ma atrybutimportant.

Chcę znaleźć wszystkich ludzi, którzy wczytują tylko ważne notatki. W języku SQL, które będą:

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

W Railsach jedynym podobnym sposobem jest użycieincludes (Uwaga:joins nie wczytuje notatek) w ten sposób:

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

Jednak spowoduje to wygenerowanie następującego zapytania SQL, które zwróci inny zestaw wyników:

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

Zauważ, że pierwszy zestaw wyników zawiera wszystkie osoby, a drugi tylko osoby powiązane z ważnymi notatkami.

Zauważ również, że: warunki są przestarzałe od 3.1.

questionAnswers(7)

yourAnswerToTheQuestion