Rails 3 соединяет связанную модель с областью действия по умолчанию - PullRequest
0 голосов
/ 10 августа 2011

Я пытаюсь выполнить запрос по моделям со следующей настройкой

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

Мне это кажется беспорядочным, есть ли способ присоединиться и включить область объединения объединенной ассоциации по умолчанию?

1 Ответ

4 голосов
/ 10 августа 2011

Похоже, я нашел ответ, который искал, я просто сделал это

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

что гораздо приятнее без дублированной логики

...