Abbiamo già creato un modello utente all'inizio del progetto, ma ora (diverse migrazioni successive) vorremmo utilizzare la gemma del progetto. È possibile aggiungere un dispositivo se il modello utente e la tabella esistono già? Cioè, è possibile modificare ciò che è già stato fatto, o dobbiamo ricominciare tutto da capo?È possibile aggiungere inventare, se il modello utente esiste già?
risposta
L'ho fatto. È un po 'doloroso, ma Devise ne vale la pena. Crea un'app fittizia e fai le migrazioni. Quindi dai un'occhiata a schema.rb e scrivi alcune migrazioni che fanno la stessa cosa al tuo modello utente esistente.
In alternativa è possibile leggere il codice sorgente e scoprire dove sono definiti "database_authenticateable". È necessario iniziare here.
Cavert Coder, ma:
(Nota,
questo non migra ": con serratura" perché non mi preoccupo quando l'ho scritto
Questo include ora: con serratura a causa MattSlay importava più di me fatto :). Inoltre, è necessario migrare le password degli utenti nel campo delle password crittografate. Infine, potrebbe non funzionare per te. Siamo spiacenti)
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
In aggiunta alla lista che Aquarion fornito, penso di aver trovato i tre campi necessari se si desidera implementare il:. 'Opzione serratura sul modello User:
add_column :users, :failed_attempts, :integer, :default => 0
add_column :users, :unlock_token, :string
add_column :users, :locked_at, :datetime
Ha funzionato per me! Ora, di che cosa si tratta: bloccabile? Guardo la migrazione di Devise User e vedo solo i campi che hai elencato. Dove potrei imparare di più su questo: cosa bloccabile? Mi piacerebbe implementare lo schema completo di Devise User. – MattSlay
Ah, penso di aver trovato i campi obbligatori: bloccabili. Li ho pubblicati in una risposta separata di seguito. – MattSlay
Ah, fantastico. L'ho integrato con l'unico grande file di schema sopra ora. Grazie. – Aquarion