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

相关问题