从CanCan等访问Devise帮助方法

时间:2010-11-25 09:11:38

标签: ruby-on-rails devise cancan

这似乎是一个简单的问题,我无法解决这个问题。

使用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

1 个答案:

答案 0 :(得分:3)

这可能不是您想要的答案,但似乎您想要混合不应混合的代码问题。

在授权规则中访问user_signed_in?是个好主意吗? ......由于授权仅涉及某人可以做的事情,因此不应该关注某人是否经过身份验证。

在您的帖子控制器上过滤前(before_filter :authenticate_user!)以检查您的用户是否经过身份验证应该足以实现您的目标;您的授权规则可以与一起运行身份验证检查,而不是与其代码混淆。

这是一种分层的方法: - )