【发布时间】:2014-05-15 11:57:23
【问题描述】:
我正在使用 Rails 4.0.1 和 ruby 2.1.1。我正在尝试将 cancan 与 rails_admin 集成。我的application_controller.rb 是这样的
helper_method :current_user
private
def current_user
@current_user ||= User.find_by(email: session[:user_id]) if session[:user_id]
end
我的 current_user 辅助方法在应用程序的其余部分运行良好。我的ability.rb 是这样的
class Ablity
include CanCan::Ability
def initialize(user)
if user
can :access, :rails_admin
end
end
end
控件根本没有进入 if 条件,这意味着“user”参数为“nil”。当我尝试访问 rails_admin 时,我得到一个 CanCan::AccessDenied 异常。我哪里错了?
编辑:我没有使用设备进行身份验证
更新:我已将 cancan 替换为 cancancan 1.8 版。还是不行
【问题讨论】:
-
您是否使用设备进行身份验证?
-
不。我的身份验证取决于
REST调用。所以我使用自己定制的身份验证。 -
尝试在
protected而不是private下定义你的current_user方法 -
cancan与 Rails 4 不兼容,不再维护。请改用cancancan:github.com/CanCanCommunity/cancancan。 -
我已经将它与我的 rails 4 应用程序一起使用
标签: ruby-on-rails ruby ruby-on-rails-4 cancan rails-admin