Ruby on rails 检查Rails中是否存在对象并将其设置为等于的有效方法
在Rails 4中,我想将一个变量设置为等于ActiveRecord对象,但前提是它存在。例如,我想将实例变量@admin设置为通过params传入的给定密码的admin。我现在就是这样做的:Ruby on rails 检查Rails中是否存在对象并将其设置为等于的有效方法,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,在Rails 4中,我想将一个变量设置为等于ActiveRecord对象,但前提是它存在。例如,我想将实例变量@admin设置为通过params传入的给定密码的admin。我现在就是这样做的: if Admin.find_by_email(params[:email]) @admin = Admin.find_by_email(params[:email]) end 我需要使用电子邮件“params[:email]”检查是否存在管理员,以处理传入无效电子邮件的边缘情况。但是,这种方法需要
if Admin.find_by_email(params[:email])
@admin = Admin.find_by_email(params[:email])
end
我需要使用电子邮件“params[:email]”检查是否存在管理员,以处理传入无效电子邮件的边缘情况。但是,这种方法需要我执行2个数据库请求。我宁愿只做一件事,完成同样的事情。有什么建议吗?删除if语句即可。像find_by_email这样的动态查找者如果没有找到任何东西,将返回零 然后,当代码依赖于管理员时,存在
unless @admin.blank?
#do stuff
end
只需删除if语句。像find_by_email这样的动态查找者如果没有找到任何东西,将返回零 然后,当代码依赖于管理员时,存在
unless @admin.blank?
#do stuff
end
您可以简单地执行以下操作:
@admin = Admin.find_by_email(params[:email])
如果找不到管理员,@admin将等于nil
或使用临时变量:
admin_tmp = Admin.find_by_email(params[:email])
@admin = admin_tmp if admin_tmp.present?
您可以简单地执行以下操作:
@admin = Admin.find_by_email(params[:email])
如果找不到管理员,@admin将等于nil
或使用临时变量:
admin_tmp = Admin.find_by_email(params[:email])
@admin = admin_tmp if admin_tmp.present?
可以我想我已经试过了,但还是出错了。我可能只是事后没有做if@admin检查。谢谢可以我想我已经试过了,但还是出错了。我可能只是事后没有做if@admin检查。谢谢