Próbuję utworzyć named_scope, który używa sprzężenia, ale chociaż wygenerowany SQL wygląda prawidłowo, wynik jest śmieci. Na przykład:Rails named_scopes z łączeniami
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' "
}
(klip jest własnością Series, seria należy do Pokazują, a Poproś mogą być widoczne lub niewidoczne).
Clip.all robi:
SELECT * FROM `clips`
Clip.visible.all robi:
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')
To wygląda w porządku. Ale wynikowa tablica modeli Klipów zawiera Klip z identyfikatorem, którego nie ma w bazie danych - zamiast tego podniósł identyfikator pokazu. Gdzie się mylę?