我有基於用戶角色的訪問控制。用戶有很多角色。 每個角色都可以訪問一些控制器,操作和範圍。Rails4從模型方法訪問controller_name
我有方法can_control?(控制器)在用戶模型中檢查用戶是否有權訪問特定的控制器。我有類似的行動方法。
然後,在視圖或控制器我可以使簡單的邏輯使用隱藏某些信息或允許訪問:
current_user.can_control?(controller_name)
不知是否有可能創造在用戶模型,其自動進行CONTROLLER_NAME方法。我試圖在模型中定義方法。
def can_control?
self.permitted_cotrollers.include?(controller_name)
end
但它給我一個錯誤:
undefined local variable or method `controller_name' for #<User:0x007f00e8ceb928>
我理解錯誤,但是可以找到解決辦法,或者有可能有一個。
我覺得你還是需要通過控制器的名稱,因爲can_control參數?是一種實例方法,您需要檢查用戶訪問某個控制器的能力。每次您加載不同的視圖時,Controller_name似乎也會更改。爲了便於實施,您可以嘗試使用:https://github.com/CanCanCommunity/cancancan –
恐怕您沒錯。在這個例子中它很容易,但我需要更復雜的方法,我需要使用這個方法,並在每個方法中傳遞它並不像我想的那樣幹。 – rpeczykowski
但我想如果你只是想控制訪問你的視圖和控制器,你可以嘗試'cancancan' gem。我已經嘗試了很多次,並且證明是有效的。 –