8

Me pregunto cómo puedo agregar una base de datos existente con un usuario diferente. Aquí ya tengo un modelo de cliente definir y quiero cambiar para permitir que el dispositivo trabaje en él.Diseñar la instalación desde el modelo/base de datos existente

He creado una nueva migración e insertado el código de seguimiento tiene

class AddDeviseToCustomer < ActiveRecord::Migration 
    def change 
    change_table :customers do |t| 
     #t.database_authenticatable 
     t.string :encrypted_password, :null => false, :default => '', :limit => 128 
     t.confirmable 
     t.recoverable 
     t.rememberable 
     t.trackable 
     t.token_authenticatable 
     t.timestamps 
    end 
    end 
end 

De acuerdo con este debería funcionar. https://github.com/plataformatec/devise/wiki/How-To:-change-an-already-existing-table-to-add-devise-required-columns. Pero cuando se ejecuta rake db: migrate me sale el siguiente

undefined method `confirmable' for #<ActiveRecord::ConnectionAdapters::Table:0x9286a28> 

he ejecutar la siguiente línea

rails g devise:install 

algún motivo legado no lo reconocerá, ¿necesito hacer algo para decir al cliente es un ingenio? Gracias de antemano

+0

¿Agregaste gema "devise" a tu Gemfile y luego ejecutas "bundle install"? solo una confirmación :) –

+0

sí, lo hice, pero veo que no hay ningún ayudante involucrado. Debería preocuparme por esto? – Jseb

+0

¡Marque la respuesta correcta! – retro

Respuesta

17

Parece que la documentación está desactualizada.

Trate de usar generador de legado, se creará misma migración, con los parámetros correctos, que está bien si es un modelo existente:

rails g devise customer 

debe crear AddDeviseToCustomers migración

con algo similar a esto:

class AddDeviseToCustomers < ActiveRecord::Migration 
def self.up 
change_table(:customers) do |t| 
    ## Database authenticatable 
    t.string :email,    :null => false, :default => "" 
    t.string :encrypted_password, :null => false, :default => "" 

    ## Recoverable 
    t.string :reset_password_token 
    t.datetime :reset_password_sent_at 

    ## Rememberable 
    t.datetime :remember_created_at 

    ## Trackable 
    t.integer :sign_in_count, :default => 0 
    t.datetime :current_sign_in_at 
    t.datetime :last_sign_in_at 
    t.string :current_sign_in_ip 
    t.string :last_sign_in_ip 

    ## Confirmable 
    t.string :confirmation_token 
    t.datetime :confirmed_at 
    t.datetime :confirmation_sent_at 
    t.string :unconfirmed_email # Only if using reconfirmable 

    ## Lockable 
    # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts 
    # t.string :unlock_token # Only if unlock strategy is :email or :both 
    # t.datetime :locked_at 

    ## Token authenticatable 
    # t.string :authentication_token 


    # Uncomment below if timestamps were not included in your original model. 
    # t.timestamps 
end 

def self.down 
# By default, we don't want to make any assumption about how to roll back a migration when your 
# model already existed. Please edit below which fields you would like to remove in this migration. 
raise ActiveRecord::IrreversibleMigration 
end 
end 

nota que no hay más t.confirmable

+0

Woudl borra mi usuario actual? – Jseb

+0

No. Pruébalo tú mismo en un proyecto ficticio :) Además, puedes acceder [crear documento 2.0 aquí] (https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0 -migration-schema-style) –

+0

Gracias funciona ahora tengo que aprender a diseñarlo y usarlo correctamente – Jseb

Cuestiones relacionadas