0

named_scope または scope how クラスメソッドとの違い。

named_scope :active, :conditions => {:status => 'Active'}

def self.active
  self.find(:all, :conditions => {:status => 'Active'}
end

2つの違いは何ですか?

4

2 に答える 2

4

最後に、「スコープ」は、モデルで連鎖可能なクラス メソッドを定義します。そのため、「スコープ」(クラス ActiveRecord::Relation のオブジェクト) を返すすべてのクラス メソッドを、定義済みのスコープ / named_scope と同じ方法で使用できます。

スコープについて詳しく知りたい場合は、Rails コンソールを使用して出力を少し試してみることをお勧めします。または、おそらく最初に、Rails ガイドを読んでください ( http://guides.rubyonrails. org/active_record_querying.html#scopes

編集:

ああ、もちろん、Rails のコードを読むことで、多くの場合、誰よりも早く問題を解決できます。ここで「スコープ」メソッドの定義を見ると: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/scoping/named.rb#L159メソッド(クラスレベル)-これは、例のように、メソッドを自分で定義するのとかなり似ています。

于 2012-08-05T12:28:33.590 に答える