ruby-on-rails 检查查询结果是否为空 (Model.find)

标签 ruby-on-rails database ruby-on-rails-3 activerecord

我在 Rails 上使用 ruby​​ 并尝试检查查询是否返回值。

这是查询:

@search = Customer.find_by_name($login_name)

如果查询找到一个结果,一切都很好,但我该如何对空结果使用react?

我试过:

if @search.empty?
  flash[:notice] = 'Username nicht bekannt'
  redirect_to :action => :login
end

但是我得到一个错误:

undefined method `empty?' for nil:NilClass

任何想法出了什么问题?

谢谢!!!

最佳答案

使用它来检查 nil 和空的情况:

@search.blank?

对于相反的情况(NOT nil 和 NOT empty),使用 .present? :

@search.present? #equivalent of !@search.blank?

您的查询返回 nil 而不是 empty 的原因是:

Customer.find_by_name($login_name)

总是返回对象Customer的一个结果,如果没有这样的结果,则返回nil

虽然是这样的:

Customer.where(:name=>$login_name)

将始终返回ActiveRecord::Relation(可以有 0-n 个结果)。并且 empty? 方法将对其起作用

关于ruby-on-rails 检查查询结果是否为空 (Model.find),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13790263/

相关文章:

MySQL index_merge 导致查询运行速度减慢 10 倍

c# - System.Data.Objects.MaterializedDataRecord 不包含属性

ruby-on-rails - rails :confirm does not show dialog box

ruby-on-rails - 最佳实践 : Ruby/Rails Rspec regex testing

ruby-on-rails - Rails 预编译在 3MB react 文件上崩溃

ruby-on-rails - 我如何不包含最新记录但包含 Rails 中对象的所有记录?

javascript - 当我在 Unicorn 服务器上运行时,Websockets 在我的 Rails 应用程序中不起作用,但在瘦服务器上运行

javascript - Jquery 不会在 Rails 中触发 document.ready

python - 如何高效创建跨平台1000+条目数据库系统?

java - 如何在 jruby 上优化 rails 项目?