我是Ruby on Rails應用程序的新手,我已經創建了CRUD,但仍然堆積在Login
& Logout
功能。在軌道上紅寶石未定義的方法'驗證'?
這是我Sessions_controller:
def new
end
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:passkey])
# Log the user in and redirect to the user's show page.
else
# Create an error message.
flash[:danger] = 'Invalid email/password combination' # Not quite right!
render 'new'
end
end
def destroy
end
這是我的看法:new.html.erb
<%= form_for(:session, url: login_path) do |f| %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :passkey%>
<%= f.password_field :passkey, class: 'form-control' %>
<%= f.submit "Log in", class: "btn btn-primary" %>
<% end %>
這是我的模型:
class User< ActiveRecord::Base
validates :first_name, :presence => true, :length => { :in => 3..20 }
validates :last_name, :presence => true, :length => { :in => 3..20 }
validates :email, :presence => true, :uniqueness => true, format: { with: /\A[^@\s][email protected]([^@.\s]+\.)+[^@.\s]+\z/ }
validates :passkey, :confirmation => true, :length => {:in => 6..20}
end
當我點擊登錄按鈕後,顯示此錯誤:
NoMethodError in SessionsController#create undefined method `authenticate' for
#User:0x0000000d5c65e0>
我該如何解決這個錯誤?
我使用ruby 1.9.7
Rails 4.2.5
& mysql2
這將幫助我很多,請。
請分享你的'用戶'模型。它沒有'authenticate'方法,如錯誤信息中所述。 – mudasobwa
嗨@mudasobwa我已更新我的帖子 –
請同時使用有意義的標題來解答問題, G。「未定義的方法'認證'」,而不是通用的「如何解決錯誤。」 – mudasobwa