我一直在尋找一種方法比使用簡單其他事情來改變我的應用程序的默認路由(root_path專門)的if/then檢查不同類型的用戶。我發現了this在線代碼示例,但是我無法使其與我的應用程序一起工作,主要問題是我根本不明白底層代碼的作用,因此我無法將代碼調整到我的應用程序。在Rails中使用約束更改默認root_path一些用戶
首先我在路由器創建此規則:
root 'admin#index', constraints: RoleConstraint.new(:admin)
然後我在lib目錄和用戶創建一個名爲role_constrait.rb新的文件驗證碼:
class RoleConstraint
def initialize(*roles)
@roles = roles
end
def matches?(request)
@roles.include? request.env['warden'].user.try(:role)
end
end
我看到傢伙在這裏使用監獄長,但是我使用康康,因爲這段代碼對我來說沒有意義,所以我不能對它做任何修改,但是從我嘗試過的,我一直得到未定義的本地變量或方法`root_path'錯誤。
非常感謝任何幫助!
'warder'和'cancan'不同的東西,請告訴你使用'devise'寶石? –
不,我正在使用魔法 –
你不能使用這個例子,因爲'devise'它是warder中間件,'sorcery'有另一個邏輯。 –