2012-06-27 6 views
17

В моем приложении Rails, каким образом можно получить доступ к переменной конфигурации Devise непосредственно из представления?Доступ к конфигурационным файлам конфигурации

Я хочу показать config.allow_unconfirmed_access_for от Devise's :confirmable модуль. Эта переменная установлена ​​в devise.rb инициализатор:

Devise.setup do 
    config.allow_unconfirmed_access_for = 3.days 
end 

Спасибо!

+0

предлагаю 'Devise.remember_for' - http://stackoverflow.com/a/34621814/1536309 –

ответ

20

Конфигурации файла devise.rb реплицированы на вашей модели Devise, поэтому, если ваш ресурс Devise равен User, вы должны получить доступ к нему через User.allow_unconfirmed_access_for.

Итак, создайте переменную экземпляра на контроллере и назначьте ему это значение, а затем вы сможете показать его на своем экране.

+1

Работал как очарование, спасибо! – dgilperez

+2

Это больше не работает (начиная с Devise 3.4.1) – ideaoforder

+0

Это все еще верно для меня на Devise 3.5.2. – dgilperez

3

Принимаемый вами ответ больше не верный. Для более поздних версий Devise параметры конфигурации привязаны к основному модулю Devise, например. Devise.allow_unconfirmed_access_for.

+0

'User.allow_unconfirmed_access_for' все еще работает для меня в Devise 3.5.2. – dgilperez

+0

подтверждено также в разработке 3.5.10. на самом деле они оба работают – dowi

0

Это дает ответ на подобный вопрос:

OmniAuth конфигурации хранится в объекте omniauths_config в пределах вложенного объекта stragety

Devise.omniauth_configs 

возвращается:

{:facebook=> 
    #<Devise::OmniAuth::Config:0x007fa6db95aa68 
    .... 

затем получить доступ с помощью символа:

Devise.omniauth_configs[:facebook].strategy

{"setup"=>true, 
"skip_info"=>false, 
"client_id"=>nil, 
"client_secret"=>nil, 
"client_options"=>{"site"=>"https://graph.facebook.com", "authorize_url"=>"https://www.facebook.com/dialog/oauth", "token_url"=>"/oauth/access_token"}, 
"authorize_params"=>{}, 
"authorize_options"=>[:scope, :display, :auth_type], 
"token_params"=>{"parse"=>:query}, 
"token_options"=>[], 
"auth_token_params"=>{}, 
"provider_ignores_state"=>false, 
"access_token_options"=>{"header_format"=>"OAuth %s", "param_name"=>"access_token"}, 
"scope"=>"email,public_profile,publish_actions", 
"info_fields"=>"email, first_name, last_name", 
"name"=>"facebook"} 
Смежные вопросы