私はいくつかのレールを練習しているレールキャストで、理解しようとしているものを見つけました。Ruby on Railsで自己は何をしますか?
認証メソッドの「自己」が何をしているのか分かりませんでした。だから私はそれを削除し、それがエラーを示すだろうかどうかを確認するために私のアプリのログインをテストし、それがやった:誰かがその「自己」をやっている正確に何を説明することができれば、私は本当に感謝
error:
**NoMethodError in SessionsController#create
undefined method `authenticate' for #<Class:0x00000102cb9000**>
。私は何が起こっていたのか正確に把握しようとしていましたが、私の周りに頭を浮かべることはできません。
メソッドはモデルで定義されており、sessions_controllerで呼び出されます。 私は自分のアプリを削除し続けていますが、ハングアップするために最初から始めています。 "自己"で立ち往生した。
私は、何かがうまくいかない理由を理解するのが好きな人のタイプです。
コントローラ:
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
モデル:
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
あなたの答えにわずかな拡張子があります: 'def object.my_foo_method'。 'obj'に' my_foo_method'を定義します。答えの文脈では、 'self'は' Class'クラスのオブジェクト(つまりクラス 'MyClass')です。したがって、そのクラスのメソッドを定義します。 – Swanand
インスタンスに「@」記号を使用しないでください。 @インスタンス= ...? –
はそれがレールであり、それはおそらくビューで使用されるでしょう –