ActiveRecord :: Relationを返す他のActiveRecordクラスメソッドよりスコープの利点を見出そうとしている10ページ以上を調べました。なぜ同じことをし、その下の選択肢よりも優れているスコープ、たとえば次のようにスコープの本当のメリット
:何度も
#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
...しかし、上記の代替も生産連鎖させることができます同じ結果。
ここでは天皇の新しい服があるかどうかを調べようとしています。構文上の観点からも、何のメリットもないようです。それらはより速く - 一部の情報源はそれを曖昧に示唆しています。
Arel私はActiveRecord :: Relationを意味すると仮定しています。 OK。構文上の利点は私には議論の余地があるようです。しかし、もし彼らが以前のバージョンでは標準的な方法ではできないことをしていたら、それはそれを説明します。 – Mark
より良い構文を使用するレールが重要です。 1日目(または100日目)のコードベースではなく、1000日目のコードベース用です。 –