【问题标题】:Rails 3 joining a related model with it's default scopeRails 3 加入具有默认范围的相关模型
【发布时间】:2011-08-10 13:29:26
【问题描述】:

我正在尝试使用以下设置查询跨模型

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) 
}

这对我来说似乎很乱,有没有办法加入并包含加入协会的默认范围?

【问题讨论】:

    标签: ruby-on-rails activerecord arel


    【解决方案1】:

    看起来我找到了我正在寻找的答案,我只是这样做了

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

    没有重复的逻辑会更好

    【讨论】:

    • &amp; Scorecard.scoped 是什么意思?
    • Scorecard.scoped 只是记分卡的默认范围,& 执行联合
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    相关资源
    最近更新 更多