2015-06-15 4 views
0

У меня есть обычная модель User с большим количеством строк. У меня есть столбец password_digest, который я хочу сохранить. (он исходит от))Перенос из существующего столбца password_digest?

И я также хочу использовать базу данных Devise аутентифицируемую, но из моих ограниченных знаний в Devise я должен использовать столбец encrypted_password.

Есть ли способ обмануть Devise в использовании моего текущего password_digest для аутентификации, поэтому я не потеряю все свои пароли пользователей? Если я добавлю столбец encrypted_password, он будет пустым, и я определенно не хочу, чтобы он оставался таким.

Возможно, я думаю об этом неправильно. Каков правильный способ решить эту проблему?

ответ

3

Просто напишите переход, чтобы переименовать имя столбца, он не потеряет ваши данные.

rails g migration ChangeColumnName 

это создаст файл миграции

class ChangeColumnName < ActiveRecord::Migration 
    def change 
     rename_column :users, :password_digest, :encrypted_password 
    end 
end 
+0

Интересный, но теперь я получаю 'ArgumentError: неверное число аргументов (0 для 1) от /home/aantonov/.rvm/gems/ruby -2.2.1/gems/devise-3.5.1/lib/devise/models/database_authenticatable.rb: 144: в 'password_digest''. Я потерялся в Devise –

+0

Кажется, вы используете 'has_secure_password' по этой причине, он ожидает' password_digest' и вызывает ошибку. Лучше читайте с этого поста [здесь] (http://stackoverflow.com/questions/12715627/devise-and-rails-argumenterror-in-deviseregistrationscontrollercreate) –

+0

Дал ему день, чтобы утонуть, и он работает. Пришлось реорганизовать несколько других методов, основанных на password_digest, но теперь все работает. Большое спасибо Rokibul Hasan! –

Смежные вопросы