Именованные расширения области действия - метод вызова вне блока Do - PullRequest
0 голосов
/ 12 апреля 2011

В моей модели User есть следующий named_scope:

  named_scope :all_stars, :joins => [:all_stars] do
    def overall
      self.find(:all, :conditions => ['recordable_type = ?', 'User'])
    end
  end

Я хочу сделать это:

  named_scope :all_stars, :joins => [:all_stars] do
    def overall
      overall_all_stars_condition
    end
  end

  def overall_all_stars_condition
    self.find(:all, :conditions => ['recordable_type = ?', 'User']) 
  end

Можно ли это сделать?

1 Ответ

2 голосов
/ 12 апреля 2011

Если вы можете превратить другую вещь в другую именованную область, вы можете затем связать воедино две области, что даст вам то, что вы хотите.такие:

object.all_stars.overall.all
object.overall.all_stars.find(:all)
# etc

А также создать метод, который делает то же самое:

def overall_all_stars_condition
  self.all_stars.overall.all
end
...