Railscasts lösten eine große Episode beim Refactoring aus. Eine Methode besteht darin, komplexe Steuerungslogik in Serviceobjekte zu verschieben, anstatt sie in das Modell zu verschieben. In one service object, wird der folgende Code verwendet:Wie funktioniert das Schlüsselwort `new` in dieser Ruby-Methodendefinition?
class PasswordReset
attr_reader :user
def self.from_email(email)
new User.find_by_email(email)
end
def self.from_token(token)
new User.find_by_password_reset_token!(token)
end
...
end
Was bedeutet das new
Schlüsselwort in beiden Verfahren Körper dienen? new User.find_by_
. Wie unterscheidet sich das von User.find_by_
?
Hier ist der Aufrufcode:
def create # controller
password_reset = PasswordReset.from_email(params[:email])
if password_reset.user
password_reset.send_email
redirect_to root_url, notice: "Email sent with password reset instructions."
else
redirect_to new_password_reset_url, alert: "Email address does not match a user account."
end
end
Auch, warum die attr_reader :user
benötigt?
können Sie den Titel neu zu schreiben, damit es die ONE reflektiert Aktuelle Frage, über die du dich informieren willst? Sie fangen mehr Fisch mit Köder, die sie ansprechend finden. –