2

我想知道 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或不是)的返回结果是否是nil

4

1 回答 1

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
于 2012-07-09T22:11:33.160 回答