Слияние Аутентификации Завещания в уже существующую пользовательскую структуру?

У меня есть полностью функциональная система аутентификации с пользовательской таблицей, которая имеет более чем пятьдесят столбцов. Это просто, но это действительно хеширует шифрование с солью, использует электронную почту вместо имен пользователей и имеет два отдельных вида пользователей с администратором также.

Я надеюсь включать аутентификацию Завещания в свое приложение, чтобы увеличить дополнительные части как почтовая проверка, забывая пароли, помнить меня маркеры, и т.д... Я просто хотел видеть, есть ли у кого-либо совет или проблемы, они встретились при слиянии Завещания в уже существующую пользовательскую структуру. Существенные поля в моей пользовательской модели:

  t.string    :first_name, :null => false
  t.string    :last_name, :null => false
  t.string    :email, :null => false
  t.string    :hashed_password
  t.string    :salt
  t.boolean   :is_userA, :default => false
  t.boolean   :is_userB, :default => false
  t.boolean   :is_admin, :default => false
  t.boolean :active, :default => true
  t.timestamps

Для справки вот поля Devise от миграции:

  t.database_authenticatable :null => false
  t.confirmable
  t.recoverable
  t.rememberable
  t.trackable

  add_index "users", ["confirmation_token"], :name => "index_users_on_confirmation_token", :unique => true
  add_index "users", ["email"], :name => "index_users_on_email", :unique => true
  add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true

Это в конечном счете превращается в эти фактические поля в схеме:

t.string   "email",                               :default => "", :null => false
t.string   "encrypted_password",   :limit => 128, :default => "", :null => false
t.string   "password_salt",                       :default => "", :null => false
t.string   "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string   "reset_password_token"
t.string   "remember_token"
t.datetime "remember_created_at"
t.integer  "sign_in_count",                       :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string   "current_sign_in_ip"
t.string   "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"

Что делает Вас, парни рекомендуют? Я просто удаляю электронную почту, hashed_password, и солю от моей миграции и вставляю 5 полей миграции Завещания, и все будет в порядке, или я должен сделать что-то еще?

Править:

Я начал делать попытку этого сам и уже столкнулся с некоторыми проблемами. Я добавил поля миграции завещания, которые я показал выше своей существующей пользовательской модели, и теперь когда я выполняю свой файл семян, это дает мне эту ошибку Postgresql:

ERROR: duplicate key value violates unique constraint "index_users_on_email"

Мой файл семян:

initial_usersA = User.create!(
[
{
    :first_name => "John", 
    :last_name => "Doe",
    :email => "johndoe@gmail.com",
    :is_userA => true,
    :is_userB => false,
            :is_admin => true,
    :password => "password",
    :password_confirmation => "password"
},
{
    :first_name => "Jane", 
    :last_name => "Smith",
    :email => "janesmith@gmail.com",
    :is_userA => true,
    :is_userB => false,
            :is_admin => true,
    :password => "password",
    :password_confirmation => "password"
}

Модель User:

devise :registerable, :authenticatable, :recoverable,
     :rememberable, :trackable, :validatable
attr_accessor :password_confirmation, :email, :password

Отслеживание стека показывает, что электронная почта, по-видимому, не подается с остальной частью переменных по некоторым причинам..., хотя все остальное в файле семени обнаруживается в фактическом запросе, электронная почта '' по некоторым причинам даже при том, что это явно defined.auth

7
задан Michael Durrant 20 November 2011 в 05:19
поделиться

1 ответ

Я бы избавился от: default => "" в вашей схеме для электронной почты. devise по умолчанию устанавливает уникальное ограничение для электронной почты, поэтому вы не хотите использовать пустую строку по умолчанию

0
ответ дан 7 December 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: