2011-08-10 22 views
0

我想跨模型查询与以下设置Rails 3中加入与它相关的模型的默认范围

Class Scorecard < AR::Base 
    default_scope where(:archived => false) 
    belongs_to :user 
    has_many :scorecard_metrics 
end 

Class ScorecardMetric < AR::Base 
    belongs_to :scorecard 
end 

Class User < AR::Base 
    has_many :scorecards 
end 

我试图从记分卡指标查询一个叫作用域联接记分卡,我想它包括记分卡的默认范围,我目前的执行情况(工作)看起来像这样

# on ScorecardMetric 
scope :for_user, lambda { 
    |user| joins(:scorecard). 
     where("scorecards.user_id = ? and scorecards.archived = ?", user.id, false) 
} 

这完全是乱来我,是有什么办法可以加入,包括加入协会的默认范围是什么?

回答

4

看起来像我发现我一直在寻找答案,我只是做这个

scope :for_user, lambda { |user| joins(:scorecard).where('scorecards.user_id = ?', user.id) & Scorecard.scoped } 

,它是没有双重逻辑

+0

好得多什么'&Scorecard.scoped'是什么意思? – Chamnap

+2

Scorecard.scoped只是Scorecards的默认范围,并且执行联合 – Jimmy