Questo è dal tutorial Hartl Rails . Stiamo registrando automaticamente un utente nel processo di creazione di quell'utente con una richiamata su #create_remember_token
. Funziona benissimo ma ci sono alcune cose, non sono chiaro. Per favore, sopportami perché sono completamente confuso al punto che non so nemmeno come porre la mia domanda.
Ho un modello utente:
class User<ActiveRecord::Base
...
...
before_create :create_remember_token
def User.new_remember_token
SecureRandom.urlsafe_base64
end
def User.encrypt(token)
Digest::SHA1.hexdigest(token.to_s)
end
private
def create_remember_token
self.remember_token = User.encrypt(User.new_remember_token)
end
...
Sono confuso riguardo al ::new_remember_token
e alla crittografia come metodi collegati a User
. Sembra che siano attributi di User
come name
, email
, password
ecc., Perché sono accessibili con notazione a punti. Ma sono definiti come metodi e sembrano restituire un valore calcolato. Non capisco, perché un attributo del modello User
è riferito a self
per l'assegnazione di self.remember_token
e User.encrypt
per l'accesso al metodo di classe.
La mia domanda
Qual è la differenza tra quanto sopra e il seguente dove User
, è sostituito con self
. ?
class User<ActiveRecord::Base
...
...
before_create :create_remember_token
def new_remember_token
SecureRandom.urlsafe_base64
end
def encrypt(token)
Digest::SHA1.hexdigest(token.to_s)
end
private
def create_remember_token
self.remember_token = self.encrypt(self.new_remember_token)
end
...
Sono un novizio nel linguaggio ruby , ma piuttosto buono con javascript, quindi se c'è un js analogico potrebbe aiutarmi a metterlo in questi termini.