結合を使用する 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' "
}
(クリップはシリーズによって所有され、シリーズはショーに属し、ショーは表示または非表示にすることができます)。
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 モデルの配列には、データベースにない ID を持つ Clip が含まれます。代わりに、ショー ID が取得されます。どこが間違っていますか?