Разработать: удалить модуль для расширенной модели - PullRequest
0 голосов
/ 10 февраля 2020

Я получил большое устаревшее приложение с моделью User. Я добавил новый тип пользователя:

class ExtendedUser < User
  devise :database_authenticatable, ...
end

Новый тип пользователя расширяет существующий, поэтому весь код, написанный для User, должен работать и для ExtendedUser, без расширения это невозможно.

Вопрос в том, как удалить модуль разработки из ExtendedUser, который приходит из User?

User, и ExtendedUser не должно быть.

Я подозреваю что удалить модуль невозможно и проще всего поставить .skip_confirmation! перед всеми местами в коде, где будет создан этот пользователь и где может измениться электронная почта.

1 Ответ

0 голосов
/ 10 февраля 2020

Вы можете просто использовать наследование, чтобы динамически оценить, какие модули включены:

class User < User
  devise *devise_modules
  # ...
  def self.devise_modules
    [:database_authenticatable, ...]
  end
end

class ExtendedUser < User
  # ...
  def self.devise_modules
    super.excluding(:confirmable)
  end
end
...