ruby-on-rails - 在 Rails 中检查对象是否存在并设置为等于的有效方法

标签 ruby-on-rails ruby ruby-on-rails-4

在 Rails 4 中,我想设置一个等于 ActiveRecord 对象的变量,但前提是它存在。例如,我想将实例变量 @admin 设置为等于具有我通过 params 传入的给定密码的管理员。这就是我现在的做法:

if Admin.find_by_email(params[:email])
   @admin = Admin.find_by_email(params[:email])
end

我需要使用电子邮件 'params[:email]' 检查管理员是否存在,以处理传入无效电子邮件的极端情况。但是,这种方法需要我做 2数据库请求。我宁愿只做一件事情,完成同样的事情。有什么建议吗?

最佳答案

只需删除 if 语句。如果找不到任何内容,像 find_by_email 这样的动态查找器将返回 nil。

然后当代码依赖于管理员存在

unless @admin.blank?
  #do stuff
end

关于ruby-on-rails - 在 Rails 中检查对象是否存在并设置为等于的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689207/

相关文章:

ruby-on-rails - stylesheet_pack_tag 不生成任何输出,尽管 CSS 文件存在于 packs 目录中

php - 带有悬停状态的 Facebook 的 api- 墙更新(照片)

ruby - 为什么 APP_PATH 阻止我启动 WEBrick

ruby-on-rails - 嵌入文档的嵌套表单

ruby-on-rails-4 - 在 activeadmin 中将数字类型过滤为字符串

html - Bootstrap - 自定义闪光灯/警报框

jquery - Rails,根据初始选择,使用部分静态数据更新第二个选择

ruby-on-rails - 在 Ruby 中覆盖 To_Json

ruby-on-rails - 停止 Sidekiq 重复作业

Ruby 运算符优先级