Можно ли добавить устройство, если модель пользователя уже существует? - PullRequest
5 голосов
/ 23 октября 2010

Мы уже создали пользовательскую модель в начале проекта, но теперь (несколько миграций позже) мы хотели бы использовать гем разработки. Можно ли добавить устройство, если модель и таблица пользователя уже существуют? То есть можно ли изменить то, что уже сделано, или нам нужно начинать все сначала?

Ответы [ 3 ]

4 голосов
/ 29 октября 2010

Cavert Coder, но:

(Обратите внимание, это не переносится ": блокируется", потому что я не заботился об этом, когда писал его Это теперь включает: блокируемый, потому что MattSlay заботился больше, чем я :) Также вам нужно перенести пароли ваших пользователей в поле зашифрованных паролей. Наконец, это может не сработать для вас. К сожалению.)

class AddDevise < ActiveRecord::Migration
  def self.up
    null    = false
    default = ""

    add_column :users, :encrypted_password, :string, :null => null, :default => default, :limit => 128
    add_column :users, :password_salt, :string
    add_column :users, :authentication_token, :string
    add_column :users, :confirmation_token,   :string
    add_column :users, :confirmed_at,         :datetime
    add_column :users, :confirmation_sent_at, :datetime
    add_column :users, :reset_password_token, :string
    add_column :users, :remember_token,      :string
    add_column :users, :remember_created_at, :datetime
    add_column :users, :sign_in_count,      :integer, :default => 0
    add_column :users, :current_sign_in_at, :datetime
    add_column :users, :last_sign_in_at,    :datetime
    add_column :users, :current_sign_in_ip, :string
    add_column :users, :last_sign_in_ip,    :string

    #:lockable fields contributed by MattSlay
    add_column :users, :failed_attempts, :integer, :default => 0
    add_column :users, :unlock_token,   :string
    add_column :users, :locked_at, :datetime

  end

  def self.down
    remove_column :users, :encrypted_password
    remove_column :users, :password_salt
    remove_column :users, :authentication_token
    remove_column :users, :confirmation_token
    remove_column :users, :confirmed_at
    remove_column :users, :confirmation_sent_at
    remove_column :users, :reset_password_token
    remove_column :users, :remember_token
    remove_column :users, :remember_created_at
    remove_column :users, :sign_in_count
    remove_column :users, :current_sign_in_at
    remove_column :users, :last_sign_in_at
    remove_column :users, :current_sign_in_ip
    remove_column :users, :last_sign_in_ip
    remove_column :users, :failed_attempts
    remove_column :users, :unlock_token
    remove_column :users, :locked_at
  end
end
3 голосов
/ 04 ноября 2010

В дополнение к списку, предоставленному Aquarion, я думаю, что нашел три поля, которые вам нужны, если вы хотите реализовать опцию: lockable в модели User:

add_column :users, :failed_attempts, :integer, :default => 0
add_column :users, :unlock_token,   :string
add_column :users, :locked_at, :datetime
0 голосов
/ 23 октября 2010

Я сделал это.Это немного больно, но Devise стоит того.Сделайте фиктивное приложение и сделайте миграцию.Затем взгляните на schema.rb и напишите некоторые миграции, которые делают то же самое с вашей существующей моделью пользователя.

Также вы можете прочитать исходный код и узнать, где определены такие вещи, как «database_authenticateable».Вы должны начать здесь .

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