Ändern devise Module nach der ersten Generation
-
26-09-2019 - |
Frage
Ich bin in den Prozess des Lernens Schienen. Ich habe gefunden Devise groß zu sein, mit der Authentifizierung erhalten und schnell und nahtlos laufen, aber ich habe eine Frage habe.
Wie kann ich die Module nach dem ersten Lauf des Generators ändern Devise (z Schienen g devise Benutzer)? Der Standardwert mit der folgenden Migration:
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
Wenn ich diese Migration ausgeführt haben, wie kann ich hinzufügen / zu einem späteren Zeitpunkt einige dieser Module entfernen? Z.B. Vielleicht will ich zu einem bestehenden User-Modell hinzufügen abschließbar. Ich verstehe, wie die Änderungen im Modell und devise.rb
zu machen, aber ich bin mir nicht sicher, was mit den Migrationen zu tun.
Entschuldigt, wenn die Antwort hier schon, ich habe für ein paar Stunden hier und in Google surften und kann nichts finden. Vielleicht für die falsche Sache, die ich bin auf der Suche.
Vielen Dank im Voraus!
Jason
ps. Ich bin mit
Schienen 3.0.0
devise 1.1.3
Lösung
Ändern Sie die Zeilen, die Sie in der Migrationsdatei wollen, dann wiederholen Sie die Migration nach dieser Anleitung:
Andere Tipps
Ich war auf der Suche nach Antworten auf die gleiche Frage, und zum Glück passierte neben jemandem zu sitzen, der wußte, wie es zu tun.
Hier ist das Beispiel für die Benutzer-Modell zu aktualisieren confirmable Modul durch ein Migrationsscript enthalten (das Skelett Skriptdatei erzeugt mit ‚Schienen erzeugen Migration 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
Ich habe diesen Fehler:
undefined local variable or method `confirmed_at' for #<User:0x000001041531c8> (NameError)
So fügen Sie confirmable -
Generieren Sie die Migration:
$ rails generate migration add_confirmable_to_users
Bearbeiten Sie die Migration:
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 / devise / wiki / How-To: -Upgrade-to-Devise-2.0-Migration-Schema-Stil
Solange Sie nur Optionen zu entfernen, wo die entsprechenden Felder wurden bereits mit dem Schema hinzugefügt (wie confirmable), können Sie jederzeit bearbeiten nur das Benutzer-Modell direkt ohne eine neue Migration.