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

我在rails上使用 ruby并尝试检查查询是否返回值.

这是查询

@search = Customer.find_by_name($login_name)

如果查询找到结果,一切都很好,但我怎么能对空结果做出反应呢?

我试过了:

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

但我得到一个错误

undefined method `empty?' for nil:NilClass

任何想法出了什么问题?

谢谢!!!

解决方法

使用它来检查nil和空案例:
@search.blank?

对于相反的情况(非零和非空),使用.present?

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

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

Customer.find_by_name($login_name)

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

而像这样的东西:

Customer.where(:name=>$login_name)

将始终返回ActiveRecord :: Relation(可能有0-n结果).空的?方法将对它起作用

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...