8
modelo

usuario se ve algo como esto:Diseñar ensure_authentication_token informa indefinido método

before_save :ensure_authentication_token 

devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 
    :token_authenticatable 

attr_accessible :email, :password, :password_confirmation, 
       :remember_me, :first_name, :last_name, 
       :cell_phone, :city, :state, :country, :user_type 

En archivo devise.rb He descomentado:

config.token_authentication_key = :auth_token 

Mi migración de usuarios parece:

class DeviseCreateUsers < ActiveRecord::Migration 
    def self.up 
    create_table(:users) do |t| 
    t.database_authenticatable :null => false 
    t.recoverable 
    t.rememberable 
    t.trackable 
    t.token_authenticatable 
    t.timestamps 
    end 

    add_index :users, :email,    :unique => true 
    add_index :users, :reset_password_token, :unique => true 
    add_index :users, :authentication_token, :unique => true 
    end 

    def self.down 
    drop_table :users 
    end 
end 

Al crear un usuario, los siguientes parámetros vienen

{"utf8"=>"✓", 
"authenticity_token"=>"+F8cjCoauVKhZPSJLhW+AAhui1DygBcODsYn4Va/ktY=", 
"user"=>{"first_name"=>"any_name", 
"last_name"=>"any_name", 
"email"=>"[email protected]", 
"password"=>"[FILTERED]", 
"password_confirmation"=>"[FILTERED]", 
"cell_phone"=>"any_number", 
"city"=>"some_city", 
"state"=>"some_state", 
"country"=>"U.S.A", 
"user_type"=>"student"}, 
"commit"=>"Sign up"} 

Pero aún así me sale error siguiente mientras que la creación de usuario:

NameError in Devise::RegistrationsController#create 

    undefined local variable or method `ensure_authentication_token' for #<User:0x007fd4448f7350> 

Lo que estoy haciendo mal aquí?

P.S. En mi Gemfile, idearán joya está configurado de la siguiente manera:

gem 'devise', :git => 'git://github.com/plataformatec/devise.git', :branch => 'master' 
+0

¿Por qué la línea 'before_save: ensure_authentication_token' en el modelo? ¿Cuál es el razonamiento? – clyfe

+0

Según los recursos que encontré, debería estar en la clase de usuario. Así que me he mantenido en el modelo. –

+0

¿Qué recursos? Creo que ese es el culpable, si lo eliminas, el error desaparecerá, pero la pregunta es "¿Cuáles son las implicaciones?". – clyfe

Respuesta

10

sentimos que era mi mal, se perdió una coma :)

devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable, #here 
    :token_authenticatable 

Su trabajo ahora.

+0

LoL. El mismo problema exacto con el que me encontré. Muchas gracias. – sivabudh

+1

¡Lol! Lo sé, a veces te quedas atascado con cosas pequeñas como esta y no puedes obtener la información adecuada sobre el error en la traza inversa. Desearía que el seguimiento fuera más fácil de usar y más inteligente. Pero de todos modos, me alegra que hayas encontrado el problema. ;) –

+0

Simplemente no puedo creerlo, lo mismo me pasó a mí. – Puce

Cuestiones relacionadas