Maa*_*aay 0 authorization ruby-on-rails devise ruby-on-rails-3
我正在尝试在我的rails3 + mongoid应用程序中使用具有CanCan角色的Devise授权.现在我必须限制用户编辑事件的权限,因此只有他们的作者可以这样做.该事件的作者由该行确定:
<%= f.hidden_field (:author, :value =>current_user.email) %>
Run Code Online (Sandbox Code Playgroud)
所以,现在在CanCan的Ability文件中我正在尝试使用此代码:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.role? :admin
can :manage, :all
else
can :read, :all
end
if
user.role?(:normal)
can :create, Event
can :update, Event do |event|
event.try(:author) == current_user.email
end
can :create, Comment
can :update, Comment do |comment|
comment.try(:author) == current_user.email
end
end
end
Run Code Online (Sandbox Code Playgroud)
结束
但这导致了我的错误:
未定义的局部变量或方法`current_user'for#
然后我试着改变
can :update, Event do |event|
event.try(:author) == current_user.email
Run Code Online (Sandbox Code Playgroud)
至
event.try(:author) == Devise.current_user.email
Run Code Online (Sandbox Code Playgroud)
但这导致了这个错误
设计的未定义方法`current_user':模块
那么,我应该怎么做以及如何从ability.rb中调用`current_user'方法?提前感谢您的任何提示.
| 归档时间: |
|
| 查看次数: |
3734 次 |
| 最近记录: |