我正在尝试创建一个使用连接的 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' )
这看起来没问题。但是生成的剪辑模型数组包含一个 ID 不在数据库中的剪辑 - 它取而代之的是一个节目 ID。我哪里错了?