moduli testamentaria modifica dopo la prima generazione
-
26-09-2019 - |
Domanda
Sono nel processo di apprendimento rotaie. Ho trovato Devise di essere grande con ottenere l'autenticazione installato e funzionante in modo rapido e senza problemi, ma io ho una domanda.
Come faccio a cambiare i moduli dopo la prima manche del generatore Devise (ad esempio rotaie g escogitare utente)? Il valore predefinito con il seguente di migrazione:
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.trackable
# t.confirmable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
# t.token_authenticatable
t.timestamps
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :confirmation_token, :unique => true
# add_index :users, :unlock_token, :unique => true
end
Se ho eseguito questa migrazione, come faccio ad aggiungere / rimuovere alcuni di questi moduli in una fase successiva? Per esempio. Forse voglio aggiungere bloccabile ad un modello utente esistente. Ho capito come apportare le modifiche nel modello e devise.rb
ma non sono sicuro di cosa fare con le migrazioni.
Mi scuso se la risposta è già qui, ho spulciato per un paio di ore qui e in Google e non ho trovato nulla. Forse sto cercando la cosa sbagliata.
Grazie in anticipo!
jason
ps. Sto utilizzando
rotaie 3.0.0
escogitare 1.1.3
Soluzione
Cambia le linee che si desidera nel file di migrazione, quindi ripetere la migrazione secondo le seguenti istruzioni:
Altri suggerimenti
I stava cercando risposta alla stessa domanda, e per fortuna, è accaduto di essere seduto accanto a qualcuno che sapeva come farlo.
Ecco l'esempio di aggiornamento del modello agli utenti di includere il modulo confermabile tramite uno script di migrazione (il file di bozza di script generato con 'rotaie generano migrazione add_confirmable_to_users' ):
class AddConfirmableToUser < ActiveRecord::Migration
def self.up
change_table :users do |t|
t.confirmable
end
add_index :users, :confirmation_token, :unique => true
end
def self.down
remove_column :users, :confirmable
remove_index :users, :confirmation_token
end
end
mi è stato sempre questo errore:
undefined local variable or method `confirmed_at' for #<User:0x000001041531c8> (NameError)
Per aggiungere Confermabile -
Genera la migrazione:
$ rails generate migration add_confirmable_to_users
Modifica la migrazione:
class AddConfirmableToUsers < ActiveRecord::Migration
def change
add_column :users, :confirmation_token, :string
add_column :users, :confirmed_at, :datetime
add_column :users, :confirmation_sent_at, :datetime
add_column :users, :unconfirmed_email, :string
end
end
http://guides.rubyonrails.org/migrations.html
https: // GitHub. com / plataformatec / disposizione testamentaria / wiki / How-To: -Upgrade-to-Devise-2.0-migrazione-schema-stile
Fino a quando si sta solo rimozione delle opzioni dove i campi appropriati sono stati già aggiunti al vostro schema (come confermabile), si può sempre e solo modificare il modello direttamente gli utenti, senza una nuova migrazione.