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

Tob*_*i89 8 database activerecord ruby-on-rails ruby-on-rails-3

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

这是查询:

@search = Customer.find_by_name($login_name)
Run Code Online (Sandbox Code Playgroud)

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

我试过了:

if @search.empty?
  flash[:notice] = 'Username nicht bekannt'
  redirect_to :action => :login
end
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误:

undefined method `empty?' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

任何想法出了什么问题?

谢谢!!!

Rah*_*arg 28

使用它来检查nil和空案例:

@search.blank?
Run Code Online (Sandbox Code Playgroud)

对于相反的情况(NOT nil和NOT empty),请使用.present?:

@search.present? #equivalent of !@search.blank?
Run Code Online (Sandbox Code Playgroud)

您的查询返回的原因nil ,而不是empty为:

Customer.find_by_name($login_name)
Run Code Online (Sandbox Code Playgroud)

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

而类似的东西:

Customer.where(:name=>$login_name)
Run Code Online (Sandbox Code Playgroud)

ActiveRecord::Relation始终返回您(可能有0-n结果).和empty? 方法将工作