我正在尝试使用以下设置查询模型
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)
}
这对我来说似乎很麻烦,有没有办法加入并包含加入关联的默认范围?
答案 0 :(得分:4)
看起来我找到了我要找的答案,我刚刚做了这个
scope :for_user, lambda { |user| joins(:scorecard).where('scorecards.user_id = ?', user.id) & Scorecard.scoped }
没有重复的逻辑就更好了