这似乎是一个简单的问题,我无法缠绕我的头。

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

我如何访问定义的方法 ApplicationControllerAbility Cancan提供的课程?

又名,类似的事情:

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.

有帮助吗?

解决方案

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

访问是个好主意吗 user_signed_in? 在您的授权规则内? ...由于授权仅关注某人可以做的事情,并且不应关心某人是否经过身份验证(或没有)。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top