我在尝试验证用户时收到以下错误。Rails - 未定义的方法`验证'
NoMethodError (undefined method
的authenticate”的#)`
user.authenticate( '密码')是成功的(即返回用户对象)当我执行从轨道控制台该命令。
irb(main):008:0> user.authenticate("sanket")
=> #<User id: 2, name: "Sanket", email: "[email protected]", created_at: "2014-02-14 08:58:28", updated_at: "2014-02-14 08:58:28", password_digest: "$2a$10$KNuBgvqVDIErf3a24lMcaeNt1Hyg0I8oreIQSEYsXY4T...", remember_token: "3b64273a4fcced7c8bf91f7f7490e60a5919658d">
然而,当我在一个辅助类把user.authenticate,并使用URL访问它,它说
undefined method 'authenticate' for #<ActiveRecord::Relation:0x007fd9506dce38>
我的用户模型看起来像:
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation
has_secure_password
.
.
.
end
相关制药OD在session_helper.rb样子:
def create
user = User.where(:email => params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_to user
else
flash.now[:error] = 'Invalid email/password combination'
render "new"
end
end
它详细介绍了if user && user.authenticate(params[:session][:password])
线上面的错误。
令我惊讶的是,它是从rails控制台工作的,但是同样的调用不能从rails服务器上运行。
这也解释了它。谢谢。 –