检查Rails数据库查询是否返回任何内容

时间:2012-07-09 22:05:01

标签: ruby-on-rails activerecord

我想知道Rails数据库查询是否返回一行(我不需要知道行中的什么,只是返回一行)。

我可以这样做:

academic_year = AcademicYear.find_by_raw_input(year)

if academic_year 
 ...
end

但如果我输入错误并执行find_all_by

academic_year = AcademicYear.find_all_by_raw_input(year)

然后返回一个空数组,这会导致if语句为真。

我知道,我应该小心并且只是避免all调用,但是有一个rails-esque调用来查看来自任何查询(all或否)的返回结果是否为{{ 1}}?

1 个答案:

答案 0 :(得分:4)

正如您所说,find_by_...将返回nilfind_all_by_...将返回[]。我认为你要找的是.blank?

if !academic_year.blank?
  #...
end

在控制台

> AcademicYear.find_by_raw_input(some_non_existent_year).blank?
  => true
> AcademicYear.find_all_by_raw_input(some_non_existent_year).blank?
  => true