我在鐵軌上只是練習一些鐵軌,遇到了一些我正在嘗試理解的東西。紅寶石在軌道上做了什麼?
我沒有得到驗證方法的「自我」。所以我刪除它和測試我的應用程序的登錄,看看它會顯示一個錯誤,它沒有:
error:
**NoMethodError in SessionsController#create
undefined method `authenticate' for #<Class:0x00000102cb9000**>
我真的很感激,如果有人能解釋什麼是「自我」在做什麼。我試圖弄清楚到底發生了什麼,但無法擺脫困境。
方法在模型中定義,並在會話控制器中調用.. 我一直在不斷刪除我的應用程序,並從頭開始獲取它的竅門,每次我重新開始時,許多事情對我來說都有意義,但我是卡在「自我」。
我只是喜歡理解爲什麼有效的人的類型。
控制器:
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
不應該在實例中使用「@」符號,例如@instance = ...? –
考慮到它的軌道,並可能會在視圖中使用 –