Являются ли области видимости просто синтаксическим сахаром, или есть какое-то реальное преимущество в их использовании по сравнению с методами класса?
Простым примером может быть следующий. Насколько я могу судить, они взаимозаменяемы.
scope :without_parent, where( :parent_id => nil )
# OR
def self.without_parent
self.where( :parent_id => nil )
end
Для чего больше подходит каждый из методов?
РЕДАКТИРОВАТЬ
named_scope.rb упоминает следующее (как указано ниже goncalossilva ):
Строка 54 :
Обратите внимание, что это просто «синтаксический сахар 'для определения фактического класса method
Строка 113 :
Именованные области также могут иметь расширения, так же, как с объявлениями has_many:
class Shirt < ActiveRecord::Base
scope :red, where(:color => 'red') do
def dom_id
'red_shirts'
end
end
end