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

前端之家收集整理的这篇文章主要介绍了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结果).空的?方法将对它起作用

猜你在找的Ruby相关文章