我在 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/