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

È stato utile?

Soluzione

Cambia le linee che si desidera nel file di migrazione, quindi ripetere la migrazione secondo le seguenti istruzioni:

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

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top