2

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')] } }
4

1 に答える 1

2

ラムダを使用すると、スコープに引数を指定できます。

上記の場合、あなたは言うことができます

Model.with_avatarおよびModel.date_from( "10.08.2010")ただし、たとえばModel.with_avatar(false)とは言えません。

この場合、ラムダへの引数にいくらか注意する必要があります。date_fromに引数を渡さない限り、おそらく機能しません。「回避策」の1つは、| *date|を使用することです。、渡されたかどうかを確認し、渡されなかった場合はデフォルト値に設定します。

于 2010-08-21T06:43:49.513 に答える