1

Я использую Clearance для аутентификации и пытаюсь установить корень в зависимости от того, вошел ли пользователь в систему или нет. Вход в систему, выход из системы и создание/удаление пользователей прекрасно работают.Ошибка маршрутизации «неинициализированная постоянная» с использованием зазора

Я следую за этим article from Thoughtbot, где я добавил ограничение на свой маршрут.

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

# Visitor 
root to: "home#index" 

И я также создал signed_in_constraint.rb в/Lib/клиренса, который выполняет проверку:

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

Если я открываю рельсы консоль и проверьте зазор, я не получаю ошибки, так что загрузка модуля Clearance, но не SignedInConstraint из lib.

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.

Использование Rails 4 на Ruby 2.0.

Thanks

ответ

0

Ограничения теперь встроены в оформление. Вы можете делать такие вещи, как:

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

Спасибо Dan - я видел это в документах, но я получаю 'ArgumentError: неверное имя маршрута, уже используемое: 'root''. Требуется ли дополнительная логика? – colourgarden

+0

Кажется, что это (без дубликатов имен) специально было встроено в Rails 4. Теперь я назвал маршруты, используя ': as', и он работает правильно. Спасибо за вашу помощь. [Источник] (https://github.com/plataformatec/devise/issues/2393) – colourgarden

Смежные вопросы