#ruby-on-rails #dry #named-scope
#ruby-on-rails #dry #именованная область видимости
Вопрос:
У меня есть следующий 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:
Если вы можете преобразовать другую вещь в другую именованную область, вы можете затем объединить две области, что даст вам то, что вы хотите.
named_scope :all_stars, :joins => [:all_stars]
named_scope :overall, :conditions => ['recordable_type = ?', 'User']
Тогда вы должны иметь возможность вызывать его как таковой:
object.all_stars.overall.all
object.overall.all_stars.find(:all)
# etc
А также создайте метод, который делает то же самое:
def overall_all_stars_condition
self.all_stars.overall.all
end