我是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