1
所以这是我根据Railscast #386编写的授权码。从头开始为用户提供Railscast授权
问题是,该块在除user_controller
之外的所有控制器上都能正常工作。换句话说,任何用户都可以对任何其他用户动作edit
和update
动作,即使给予它的块与动作edit
和update
动作的块相同。
def initialize(user)
allow :users, [:new, :create, :show]
allow :sessions, [:new, :create, :destroy]
allow :favors, [:index, :show]
if user
allow :users, [:edit, :update] do |usr|
usr.id == user.id
end
allow :favors, [:new, :create]
allow :favors, [:edit, :update] do |favor|
favor.user_id == user.id
end
allow :acceptances, [:create, :update] do |acceptance|
!acceptance.has_accepted_acceptance?
end
end
end
任何帮助,高度赞赏:)
[它在YouTube上可用](https://www.youtube.com/watch?v=GE-4chF3Tu0)适用于没有RailsCast订阅的人 –
您是否正在授权“@ user”用户控制器? –
我在'user_controller'中的'current_resource'方法中传递'current_user',它覆盖'application_controller'中的'current_resource'方法,然后作为对象传递给'Permission'类。问题是,我猜'用户current_resource'不覆盖'application_controller' – fardin