我有一个奇怪的问题,我似乎无法find_by_email
在我的项目中工作,这是我的控制器中我得到异常的部分。我正在使用rails 4.0.3
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_url, notice: "Welcome back!"
else
flash.now.alert = "Email or password is invalid"
render "new"
end
end
我无法阻止代码出现任何问题,但仍然会获得操作控制器:异常被抓住:
NoMethodError in SessionsController#create
app/controllers/sessions_controller.rb:6:in `create'
undefined method `find_by_email' for #<Class:0x007fbdd62179b0>
我想知道是否还有其他方法可以解决这个问题?我已尝试在rails控制台中手动使用该方法但遇到同样的问题。
答案 0 :(得分:1)
正如许多人所建议的那样,这是由于用户表中缺少email
列。
如果您尚未运行迁移,请执行此操作。
答案 1 :(得分:0)
在用户表格中添加电子邮件字段
Rails 4.1.0将按方法
折旧自定义查找使用
User.find_by email: params[:email]
迟早你必须改变它。
参考
http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_by