【发布时间】:2012-02-09 10:48:03
【问题描述】:
我需要一些建议。
在我的控制器中,我有一个错误: "accessible_by 调用不能与块 'can' 定义一起使用。无法确定 SQL ..."
组控制器代码:
@groups = @q.result.order('name').accessible_by(current_ability,:read).page(params[:page]).per(20)
在ability.rb文件中:
can :read, Group do |group|
group.try(:group_type) == 1 || group.try(:user) == user || user_just_joined(user, group.id)
end
user_just_joined 是一个函数,它返回真或假,如果用户在这个组中相关,或者不相关。
是的,我知道我应该以这种方式准备代码,以避免出现此错误:
can :read, Group, :group_type => 1
can :read, Group, :user => user
can :read, Group, user_just_joined(user, :id)
// 上面的代码应该创建“OR”语句,类似于第一个例子
但是:can :read, Group, user_just_joined(user, :id) 不起作用,:id 值未定义。
在函数中使用“OR”语句的最佳解决方案是什么,根据传递的参数返回真或假?
【问题讨论】: