红宝石上轨检查,如果查询结果为空(Model.find) [英] ruby-on-rails check if query result is empty (Model.find)
本文介绍了红宝石上轨检查,如果查询结果为空(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屋!
查看全文