named_scopeとnamed_scope+ラムダRubyonRailsコードステートメントの違いは何ですか?
named_scope :with_avatar, :conditions => ['avatar IS NOT NULL']
と
named_scope :date_from, lambda { |date| { :conditions => ['created_at >= ?', DateTime.strptime(date, '%d.%m.%Y')] } }
named_scopeとnamed_scope+ラムダRubyonRailsコードステートメントの違いは何ですか?
named_scope :with_avatar, :conditions => ['avatar IS NOT NULL']
と
named_scope :date_from, lambda { |date| { :conditions => ['created_at >= ?', DateTime.strptime(date, '%d.%m.%Y')] } }
ラムダを使用すると、スコープに引数を指定できます。
上記の場合、あなたは言うことができます
Model.with_avatarおよびModel.date_from( "10.08.2010")ただし、たとえばModel.with_avatar(false)とは言えません。
この場合、ラムダへの引数にいくらか注意する必要があります。date_fromに引数を渡さない限り、おそらく機能しません。「回避策」の1つは、| *date|を使用することです。、渡されたかどうかを確認し、渡されなかった場合はデフォルト値に設定します。