在范围内传递参数

有人可以提供一个如何使用的例子

scope 

和参数?

例如:

 class Permission < ActiveRecord::Base scope :default_permissions, :conditions => { :is_default => true } end 

我有这个代码,返回default_permissions,我想将其转换为返回给定用户的默认权限(user_id)

谢谢

新的语法(ruby1.9 +),即使你不提供用户,这将防止错误 –

 scope :default_permissions_for, ->(user = nil) { ... } 

使用lambda范围:

 scope :default_permissions_for, lambda{|user| { :conditions => { :user_id => user.id, :is_default => true } } 

要小心,因为没有传递参数给一个lambda,当它期望会引发一个exception。