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

War es hilfreich?

Lösung

Ändern Sie die Zeilen, die Sie in der Migrationsdatei wollen, dann wiederholen Sie die Migration nach dieser Anleitung:

http://guides.rubyonrails.org/migrations.html

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top