Warunek do zlaczenia a ActiveRicord

Witam

AR to swietna sprawa ale nie moge dojsc w jaki sposob dodac warunek przy zlaczeniach na co mysql pozwala…

dla pelnej jasnosci… dokladnie chce aby AR zrobil zlaczenie w stylu:

SELECT * FROM users
LEFT OUTER JOIN filleds ON users.id = filleds.user_id AND users.status = 1

wiem ze w tym przypadku mozna to zastapic WHERE users.status = 1 ale potrzebuje to do troche bardziej skomplikowanego zapytania gdzie ten sposob sie nie sprawdza

Z gory dzieki za pomoc

Witam

Mam ten sam problem.

Niestety nie potrafie tego problemu rozwiazac a :joins nie daje oczekiwanych efektow

Pozdrawiam

[quote=sadu]chce aby AR zrobil zlaczenie w stylu:

SELECT * FROM users
LEFT OUTER JOIN filleds ON users.id = filleds.user_id AND users.status = 1

wiem ze w tym przypadku mozna to zastapic WHERE users.status = 1 ale potrzebuje to do troche bardziej skomplikowanego zapytania gdzie ten sposob sie nie sprawdza[/quote]

Users.find :all, :joins => "u LEFT JOIN filleds f ON u.id=f.user_id AND u.status=1"

zdaje sie ze w ten sposob AR nie zrobi asocjacji miedzy user a filleds… jak teraz napisze user.filleds to od nowa bedzie odpalal sqlki dla kazdego obiektu a tego chce uniknac

JOIN to join. Zabacz w logach, jakie zapytanie się wykonuje jak nie wierzysz. :joins można używać w taki sposób zamiast :include. dodatkowa zaleta: z :joins działa wybieranie po polach (:select) a z :include zawsze wybiera wszystko bez względu na to co się poda w :select. Np. find (:all, :select => ‘pole1,pole2’, :include => ‘tabela2’) i tak wykona “SELECT * FROM…” To jest chyba jakiś bug w RoR.

Ale rozumiem, że tobie chodzi o to, że masz w modelu has_many :filleds. To akurat nie ma żadnego związku z tym selectem.