1

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

在新的 Rails 3 应用程序上使用 Devise 进行身份验证和 CanCan 进行授权。

如何访问CanCan 提供ApplicationControllerAbility类中定义的方法?

又名,是这样的:

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

4

1 回答 1

3

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

user_signed_in?在您的授权规则内访问是个好主意吗?...因为授权只关心某人可以做什么,而不应该关心某人是否经过身份验证(或没有)。

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

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

于 2010-11-25T10:51:46.853 回答