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