Разработать модификацию конфигурации на основе субдомена / запроса

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

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

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

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

ТРАССИРОВКИ СТЕКА

/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 ответ


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

  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

Есть идеи?

10000