我想創建一個輔助的方法來檢查,如果用戶被授權使用某些功能,如new
,create
,edit
,update
和destroy
記錄爲零。實例變量公共控制器方法
當它進入視圖時,它會生效,但我想阻止聰明的用戶通過輸入正確的URL來創建新的Games
。
在我的控制,我有:
before_action :is_admin, only: [:index, :platform, :publisher, :new, :edit, :create, :update, :destroy]
def destroy
if [email protected]
@game.destroy
respond_to do |format|
format.html { redirect_to games_url }
format.json { head :no_content }
end
else
redirect_to @game, notice: 'User not authorized to delete games.'
end
end
def is_admin
@admin = current_user.roles.detect {|r| r.name == "Super Admin" || r.name == "Game Admin"}
end
通過使用調試器,我可以看到的是,私有方法實際上是被調用,但在公共方法@admin
是空...
我懷疑這是因爲實例變量是在私有空間中聲明的,但是如果它可用於視圖,爲什麼它不可用於控制器...
不管怎樣,任何人都有任何建議,或正確的方法做我自己的事試圖做,這將不勝感激。
謝謝。
是什麼讓你認爲'@ admin'被分配一個非nil值爲'is_admin'? –