Я пытаюсь создать named_scope, который использует соединение, но хотя сгенерированный SQL выглядит правильно, результатом является мусор. Например:
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.all делает:
SELECT * FROM `clips`
Clip.visible.all делает:
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' )
Это выглядит хорошо. Но результирующий массив моделей Clip содержит Clip с идентификатором, который не находится в базе данных, вместо этого он отобрал идентификатор шоу. Где я ошибаюсь?