红宝石上轨检查,如果查询结果为空(Model.find) [英] ruby-on-rails check if query result is empty (Model.find)

查看:122
本文介绍了红宝石上轨检查,如果查询结果为空(Model.find)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

i'm使用在轨道上的红宝石,并试图检查如果查询返回一个值或没有。

i´m using ruby on rails and trying to check if a query is returning a value or not.

这是查询:

@search = Customer.find_by_name($login_name)

如果查询找到一个结果,一切都很好,但我怎么能对空的结果会有什么反应?

If the query finds a result, everything is fine, but how can i react on empty results?

我想:

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

但我得到一个错误:

But i get an error:

undefined method `empty?' for nil:NilClass

出了什么问题?任何想法

Any Ideas what went wrong?

感谢您!

推荐答案

使用

@search.blank?

该检查零和空箱。

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

The reason your query returned nil instead of empty is :

Customer.find_by_name($login_name)

总是返回对象的一个​​结果客户如果不存在这样的结果,

always returns one result of object Customer or nil if there is no such result,

而这样的:

Customer.where(:name=>$login_name)

将返回你的ActiveRecord ::关联(可以有0-n个结果)始终。和空?方法将工作就可以了。

will return you ActiveRecord::Relation (which can have 0-n results) always. and empty? method will work on it

这篇关于红宝石上轨检查,如果查询结果为空(Model.find)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆