1

我使用Clearance進行身份驗證,並試圖根據用戶是否登錄來設置根。登錄,註銷和創建/刪除用戶都可以正常工作。「未初始化常量」使用清理路由錯誤

我正在關注此article from Thoughtbot,我在其中添加了一條約束條件。

# Logged in user 
root to: "dashboard#index", constraints: Clearance::SignedInConstraint` 

# Visitor 
root to: "home#index" 

而且我也已經在/ lib /清除創建signed_in_constraint.rb執行檢查:

module Clearance 
    class SignedInConstraint 
    def self.matches?(request) 
     request.env[:clearance].signed_in? 
    end 
    end 
end 

如果我打開了軌道控制檯,檢查間隙,我沒有得到任何錯誤,所以它是加載Clearance模塊,但不是從lib中獲取SignedInConstraint。

rails console 
Loading development environment (Rails 4.0.0)  
irb(main):001:0> Clearance 
=> Clearance 
irb(main):002:0> Clearance::SignedInConstraint 
NameError: uninitialized constant Clearance::SignedInConstraint 

我也重新啓動我的服務器(運行鐵砧和PostgresApp)多次按this ticket在Github上回購。

在Ruby 2.0上使用Rails 4。

謝謝

回答

0

約束條件現在已被納入Clearance。你可以做類似以下的東西:

constraints Clearance::Constraints::SignedIn.new { |user| user.admin? } do 
    root to: 'admin' 
end 

constraints Clearance::Constraints::SignedIn.new do 
    root to: 'dashboard' 
end 

constraints Clearance::Constraints::SignedOut.new do 
    root to: 'marketing' 
end 

祝你好運!

+0

謝謝丹 - 我確實在文檔中看到了,但是我得到了'ArgumentError:無效的路由名稱,已經在使用:'root''。是否需要其他邏輯? – colourgarden

+0

看起來這個(沒有重複的名字)有意地被內置到Rails 4中。我現在使用':as'命名路由並且它工作正常。謝謝你的幫助。 [來源](https://github.com/plataformatec/devise/issues/2393) – colourgarden

相關問題