如何从CanCan能力获得用户

时间:2014-07-09 16:33:43

标签: ruby-on-rails cancan

在CanCan中,能力被分配给单个用户。有能力记录时,有没有办法访问该用户。

我希望能够说:

@ability = Ability.new(User.find(3))
@ability.based_on_user # Does not exist, but would respond with the same thing as User.find(3)

在我的应用中,用户可以冒充其他用户,这涉及重置@current_ability = Ability.new(@impersonated_user),并且我希望能够快速让该用户进行调试。文档没有给出任何这样的方法,但是我可以使用hack,因为它只是出于我自己的测试目的。

1 个答案:

答案 0 :(得分:1)

只需将您的方法添加到您的能力模型中即可。像这样:

# in app/models/ability.rb
class Ability
  include CanCan::Ability

   def initialize(user)
     @user = user

     # the rest of your code
   end

   def based_on_user
     @user
   end
end