Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No method error en clase User #20

Open
FranLucchini opened this issue May 17, 2015 · 5 comments
Open

No method error en clase User #20

FranLucchini opened this issue May 17, 2015 · 5 comments

Comments

@FranLucchini
Copy link

Cree un método llamado authenticate en el controlador de los usuarios, aquí está el código:

def self.authenticate(name, submitted_password)
    user = find_by(username: name)
    if user.nil?
      return nil
    else
      if (user.password_hash == submitted_password)
        return user
      end
    end
  end 

y cuando lo uso para verificar que los datos ingresados en el login son correctos, me manda el error:
"undefined method `authenticate' for #Class:0x007f19b18bd9f0" cuando lo uso en mi sessions_controller:

def create

    user = User.authenticate(params[:session][:username], params[:session][:password])

revisé muchas páginas y algunas decían que tenía que ver con bcrypt, pero no encontré algo que me sirva, alguna idea?

@lopezjurip
Copy link
Member

Que raro :/
¿Intentaste por la consola?

@isseu
Copy link

isseu commented May 17, 2015

en el controlador de los usuarios

Tienes que hacerlo en el modelo de los usuarios, no en el controlador. Ya que estas haciendo User.authenticate

@FranLucchini
Copy link
Author

Oh! Gracias.
Y por qué hay que hacerlo ahí? Siento que hay algo que no me queda claro...

@jicelhay
Copy link

Si incluyes en el model de tu usuario
has_secure_password
Ni siquiera tienes que implementar los métodos, puedes usarlos asi.. tal cual.

@isseu
Copy link

isseu commented May 17, 2015

Cuando tu pones User estas accediendo a la clase user, por lo que si escribes User.authenticate estas accediendo al método estatico de la clase User por lo que no tiene sentido ponerlo en el controlador (modelo y controlador son dos cosas muy distintas, independientes del otro totalmente)

Aunque como @jicelhay dice, si estas ocupando bcrypt no es necesario que tu hagas el método de autenticación ya que la gema te hace todo. Te recomiendo seguir este ejemplo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants