Разработать модификацию конфигурации на основе субдомена / запроса - PullRequest
0 голосов
/ 26 марта 2020

Мне интересно, как я могу go о чем-то подобном в devise config.rb.

  if request.subdomain == 'app'
    config.case_insensitive_keys = [:username]
  elsif request.subdomain == 'support'
    config.case_insensitive_keys = [:email]
  end

Использование здесь в том, что я хочу, чтобы системные пользователи могли входить только с их employee_id (имя пользователя), потому что их адреса электронной почты могут появляться в нескольких учетных записях, поэтому мне нужен был способ войти в них и зарегистрироваться без проверки правильности электронной почты устройства, однако я хочу, чтобы бэкэнд-группа входила только по электронной почте (я и будущие разработчики) как там никогда не должно быть более одного пользователя с несколькими электронными письмами

, что происходит сбой, когда я пытаюсь удалить свою базу данных по какой-то причине?

STACK TRACE

/Users/taurenltd/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activerecord-6.0.2.2/lib/active_record/type.rb:27: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/Users/taurenltd/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activerecord-6.0.2.2/lib/active_record/type/adapter_specific_registry.rb:9: warning: The called method `add_modifier' is defined here
rails aborted!
SyntaxError: /Users/taurenltd/Desktop/Development/roadze-base/config/initializers/devise.rb:301: syntax error, unexpected end-of-input, expecting `end'
/Users/taurenltd/Desktop/Development/roadze-base/config/environment.rb:5:in `<main>'
/Users/taurenltd/Desktop/Development/roadze-base/bin/rails:9:in `<top (required)>'
/Users/taurenltd/Desktop/Development/roadze-base/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:drop => db:load_config => environment
(See full trace by running task with --trace)
taurenltd@Shawns-MBP roadze-base % rails db:drop db:create db:migrate
/Users/taurenltd/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activerecord-6.0.2.2/lib/active_record/type.rb:27: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/Users/taurenltd/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activerecord-6.0.2.2/lib/active_record/type/adapter_specific_registry.rb:9: warning: The called method `add_modifier' is defined here
rails aborted!
NameError: undefined local variable or method `request' for main:Object
Did you mean?  require
/Users/taurenltd/Desktop/Development/roadze-base/config/initializers/devise.rb:55:in `block in <main>'
/Users/taurenltd/Desktop/Development/roadze-base/config/initializers/devise.rb:5:in `<main>'
/Users/taurenltd/Desktop/Development/roadze-base/config/environment.rb:5:in `<main>'
/Users/taurenltd/Desktop/Development/roadze-base/bin/rails:9:in `<top (required)>'
/Users/taurenltd/Desktop/Development/roadze-base/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'

1 Ответ

0 голосов
/ 26 марта 2020

Получил это с помощью следующего блока

  def self.matches?(request)
    if request.subdomain.present? && request.subdomain == 'app'
      config.case_insensitive_keys = [:username]
    elsif request.subdomain.present && request.subdomain == 'support'
      config.case_insensitive_keys = [:email]
    end
  end
...