这似乎是一个简单的问题,我无法解决这个问题。
使用Devise进行身份验证,使用CanCan进行新Rails 3应用程序的授权。
如何在CanCan提供的ApplicationController
课程中访问Ability
中定义的方法?
a.k.a。,像这样:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # Guest user.
can :create, Post if user_signed_in?
end
end
user_signed_in?
中定义了ApplicationController
。
答案 0 :(得分:3)
这可能不是您想要的答案,但似乎您想要混合不应混合的代码问题。
在授权规则中访问user_signed_in?
是个好主意吗? ......由于授权仅涉及某人可以做的事情,因此不应该关注某人是否经过身份验证。
在您的帖子控制器上过滤前(before_filter :authenticate_user!
)以检查您的用户是否经过身份验证应该足以实现您的目标;您的授权规则可以与一起运行身份验证检查,而不是与其代码混淆。
这是一种分层的方法: - )