【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ではnil
とfalse
以外がすべてTrueになる。つまり、''
や[]
はTrueだ。空配列がfalseになる言語のノリで書いているとハマる。