Я просмотрел более 10 страниц, пытаясь найти преимущество области над любым другим классом класса ActiveRecord, который возвращает ActiveRecord:: Relation.
В следующем примере, например, почему области лучше, чем альтернативные под ним, которые делают то же самое:
#scope :pat1, lambda {{:conditions => ["name like ?", 'J%']}}
#scope :pat2, lambda {{:conditions => ["id > 5"]}}
def self.pat1
where("name like ?", 'J%')
end
def self.pat2
where("id > 5")
end
def patx
self.class.pat1.pat2.first
end
Документация снова и снова говорит о том, что области полезны, потому что они могут быть скованы...
"Все методы области будут возвращать объект ActiveRecord:: Relation, который позволит вызывать на нем дополнительные методы (например, другие области)". - guides.rubyonrails.org
"Основная область видимости лучше, чем простые методы класса, заключается в том, что они могут быть привязаны к другим методам" http://ruby.railstutorial.org
... но вышеприведенная альтернатива также может быть скована, производя те же результаты.
Просто пытаясь выяснить, есть ли здесь новая одежда императора. Даже с синтаксической точки зрения, похоже, нет никакой пользы. Бывают ли они быстрее - некоторые источники смутно предлагают это.