【发布时间】:2010-09-15 00:55:15
【问题描述】:
我正在尝试创建一个使用连接的 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。我哪里错了?
【问题讨论】:
标签: ruby-on-rails ruby activerecord named-scope