On Saturday 29 November 2008, Matthias Sch. wrote:
> Hallo Michael,
>
> danke für deine Antwort, leider funktioniert das :
>
> Sim.find(:all,
>
> :joins => :term1,
> :conditions => ["terms.bezeichnung IN (?)",
>
> ["apple"]])
>
> nicht. Falls dich der Fehler interessieren sollte :
>
> Mysql::Error: #42S22Unknown column 'sims.term_id' in 'on clause':
> SELECT `sims`.* FROM `sims` INNER JOIN `terms` ON `terms`.id =
> `sims`.term_id WHERE (`sims`.`id` = '--- :term1\n' AND
> (terms.bezeichnung IN ('apple')))
Versuch's statt dessen mal mit :include statt :joins.
Da Sim zwei Assoziationen (term1 und term2) auf die Term hat, macht
ActiveRecord hier offenbar etwas, was ich auch auf den zweiten Blick
noch verwunderlich finde. Ich kann im Augenblick nicht beurteilen, ob
ich es nur nicht verstehe, oder ob es ein Fehler ist. Vielleicht kann
das jemand anders aufklären.
Wenn das alles nicht hilft, nimm die SQL-Keule, obwohl die nicht
erforderlich sein sollte
:joins => 'INNER JOIN terms ON sims.term1_id = terms.id'
Wozu der ganze Aufwand? Nun, weil es Sache der DB ist, die Daten zu
speichern und so zurückzugeben, wie die Anwendung sie benötigt. Die DB
(sogar MySQL) ist gut darin, Daten zu filtern und zu verknüpfen und tut
das erheblich schneller als es in Ruby möglich wäre.
Michael
--
Michael Schuerig
mailto:[EMAIL PROTECTED]
http://www.schuerig.de/michael/
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug