jab*_*jac 2 ruby-on-rails mongodb mongoid
我正在尝试使用mongoid和mongodb而不是普通数据库来浏览Michael Hartl的rails4教程.我需要设置用户登录和注销的地方,这就是我遇到的问题.下面是我用来检查用户的电子邮件是否已注册的代码.
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
# sign in and load user page
else
flash[:error] = 'Invalid email/password combination'
render 'new'
# error and re-render signin
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,我遇到了一个未找到的文档,因为这是查询变为空白时返回的内容.它应该进入其他但是我得到一个rails错误页面,它返回未找到的mongoid错误文档.我如何避免这种情况并让代码执行else语句中的代码呢?
谢谢!
Mongoid有一个raise_not_found_error设置选项,强制mongoid在设置为false时不会抛出你上面提到的错误.可以在文档页面上找到更多详细信息.因此,如果您想手动处理应用程序中的所有Mongoid :: Errors :: DocumentNotFound错误,只需在mongoid.yaml中添加以下行:
raise_not_found_error: false
Run Code Online (Sandbox Code Playgroud)
如果你想让mongoid不在当前动作中引发错误,你可以在find_by方法调用之后调用rescue,然后检查用户变量是否为nil-ness:
user = User.find_by(email: params[:session][:email].downcase) rescue nil
if !user.nil? && ...
...
else
...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1706 次 |
| 最近记录: |