Как я могу настроить Devise для Ruby on Rails, чтобы хранить электронные письма и пароли где-то, кроме как в пользовательской модели? - PullRequest
6 голосов
/ 20 декабря 2010

Я хотел бы хранить электронные письма в отдельной таблице и позволить пользователям сохранять несколько электронных писем и входить в систему с любым из них.Я также хотел бы хранить пароли в другой таблице.

Как настроить Devise для хранения информации аутентификации в другом месте?

В худшем случае, если мне просто придется взломать его,есть генератор, чтобы просто перенести все в приложение?Я заметил, что был генератор для представлений.

Спасибо.

1 Ответ

6 голосов
/ 30 декабря 2010

Для этого вам просто нужно правильно настроить свои модели, создать почтовую ассоциацию. Также вам нужно переопределить метод пользовательского поиска из devise, для этого вам нужно переопределить метод self.find_for_database_authentication (условия).

class User < ActiveRecord::Base
  has_many :emails
  accepts_nested_attributes_for :emails
  ...
  def self.find_for_database_authentication(conditions)
    email = conditions.first
    self.where(:emails=>{:name=>email})
  end
end

Также вы должны добавить электронные письма на ваш devise.rb, чтобы использовать его.

Devise.setup do |config|
  ...
  config.authentication_keys = [ :emails ]
  ...
end

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

Обновление

Первый вопрос: Да, метод из устройства будет переопределен автоматически.

Второй вопрос: Вы должны иметь your_application_path / config / initializers / devise.rb Я думаю, что он создан, когда вы используете камень для разработки. Если у вас нет, вы можете создать его. Содержание, которое я указал, хорошее, просто опустите точки (...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...