カテゴリー:
Rails
タグ:
 Rails exists?

このエントリーをはてなブックマークに追加
更新日時:
2013年07月04日(木)
作成日時:
2013年07月04日(木)

前の記事 / 次の記事

Railsでレコードの存在を確認したい時は思わず find したくなるけど、
存在確認用のメソッド exists? が用意されているので exists? する。

Book.exists?(id: 7)
#=> あれば   true
#=> なければ false

find すると

Book.find(7)
#=> あれば   id が 7 である Bookオブジェクトが返る
#=> なければ 例外が発生する。

となってしまうので、頑張って例外を回避して、

if Book.find(7) rescue nil
  # do something
end

とか、そもそもなんかもう訳わかんなくなって、

if Book.where(id: 7).nonzero?
  # do something
end

とかしないで exists? を使おう。

if Book.exists?(id: 7)
  # do something
end

ちなみにidのカラムに限ったメソッドではないので、
他のカラムの値についても存在確認できる。

if Book.exists?(name: "Rails")
  # do something
end