技術メモ

書いておぼえるブログ

【Rails】空配列がTrue判定になってはまった件

状況

ActiveRecordでクエリを出して戻り値を変数にいれる。その変数が空かどうかで条件分岐させたい。

解法

books = Book.where(title: 'Great novel')
if books.present?
  # booksの中身がある場合に実行する
end

まちがい

books = Book.where(title: 'Great novel') # 該当レコードがない場合 [] (空配列)が返る
if books # 空配列はTrueになる
  # あれ?
end

考察

Rubyではnilfalse以外がすべてTrueになる。つまり、''[]はTrueだ。空配列がfalseになる言語のノリで書いているとハマる。