我有一个Rails 3项目.Rails 3带来了Arel,以及重用一个范围来构建另一个范围的能力.我想知道在定义关系时是否有使用作用域的方法(例如"has_many").
我的记录有权限栏.我想构建一个默认的_范围,将我的权限列考虑在内,以便过滤记录(甚至是通过关系访问的记录).
目前,在Rails 3中,默认的_范围(包括我找到的补丁)没有提供一种可行的方法来传递proc(我需要后期变量绑定).是否可以定义一个可以将命名范围传递到其中的has_many?
重用命名范围的 idea 如下所示:
Orders.scope :my_orders, lambda{where(:user_id => User.current_user.id)}
has_many :orders, :scope => Orders.my_orders
或者隐式地编码关系中的命名范围:
has_many :orders, :scope => lambda{where(:user_id => User.current_user.id)}
我只是想用后期绑定来应用默认范围.我更愿意使用Arel方法(如果有),但会使用任何可行的选项.
因为我指的是当前用户,所以我不能依赖在最后一刻没有判断的条件,例如:
has_many :orders, :conditions => ["user_id = ?", User.current_user.id]