Estoy en los ferrocarriles simplemente practicando algunos rieles y me he topado con algo que trato de entender.¿Qué hace el yo en ruby on rails?
No obtuve lo que estaba haciendo el "yo" en el método de autenticación. Así que lo he borrado y probé la entrada de mi aplicación para ver si sería una muestra de un error y lo hizo:
error:
**NoMethodError in SessionsController#create
undefined method `authenticate' for #<Class:0x00000102cb9000**>
Realmente agradecería si alguien podría explicar exactamente lo que "Auto" está haciendo. Estaba tratando de averiguar exactamente qué estaba pasando, pero no puedo entenderlo.
El método se define en el modelo y se llama en sessions_controller .. He estado eliminando continuamente mi aplicación y comenzando desde cero para entenderlo y muchas cosas tienen sentido para mí cada vez que empiezo de nuevo, pero estoy atrapado en "sí mismo".
Soy el tipo de persona a la que le gusta entender por qué algo funciona.
controlador:
def create
user = User.authenticate(params[:email], params[:password])
if user
session[:user_id] = user.id
redirect_to root_path, :notice => "Logged In"
else
flash.now.alert = "Invalid credentials"
render "new"
end
end
modelo:
def self.authenticate(email, password)
user = find_by_email(email)
if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
user
else
nil
end
end
Extensión leve a su respuesta: 'def object.my_foo_method'. Define 'my_foo_method' en' obj'. En el contexto de su respuesta, 'self' es el objeto de la clase' Class' (es decir, la clase 'MyClass'). Por lo tanto, define el método en esa clase. – Swanand
No se debe usar un signo '@' para las instancias, p. @instance = ...? –
dado que son rieles y que probablemente se usen en la vista –