Ich versuche, ein named_scope zu erstellen, das einen Join verwendet, aber obwohl das generierte SQL richtig aussieht, ist das Ergebnis Müll. Zum Beispiel:Rails named_scopes mit Joins
class Clip < ActiveRecord::Base
named_scope :visible, {
:joins => "INNER JOIN series ON series.id = clips.owner_id INNER JOIN shows on shows.id = series.show_id",
:conditions=>"shows.visible = 1 AND clips.owner_type = 'Series' "
}
(A Clip von einer Serie gehört, eine Serie zu einer Show gehört, kann eine Karte sichtbar oder unsichtbar sein).
Clip.all tut:
SELECT * FROM `clips`
Clip.visible.all tut:
SELECT * FROM `clips` INNER JOIN series ON series.id = clips.owner_id INNER JOIN shows on shows.id = series.show_id WHERE (shows.visible = 1 AND clips.owner_type = 'Series')
Dies sieht okay. Aber das resultierende Array von Clip-Modellen enthält einen Clip mit einer ID, die nicht in der Datenbank enthalten ist - stattdessen wird eine Show-ID aufgenommen. Wo gehe ich falsch?