私は現在、Rails Recipesを読んでいます。コントローラにクエリーを追加せずにコントローラが特定のクエリの断片にアクセスできるように、モデル内でスコープを使用するセクションがありますしたがってMVCルールに違反します)。ある時点で彼はこれを持っています:Rails 3:モデル内のスコープでのラムダの使用
class Wombat < ActiveRecord::Base
scope :with_bio_containing, lambda {|query| where("bio like ?", "%#{query}%").
order(:age) }
end
私はラムダとProcオブジェクトを使ったことがありません。これは概念的にはscope :with_bio_containing(query)
なので、スコープに引数を追加するのと同じですか?それで、スコープを関数のようにカスタマイズすることができますか?ラムダはRailsのスコープでよく使われますか?
スコープ:from_canadaでは、実行時に何も評価する必要がないため、ラムダを削除してスコープ:from_canada、(:country => "Canada") ' – Unixmonkey