読者です 読者をやめる 読者になる 読者になる

パンプキンスパイスラテ

IT系のことが多めの日記帳です

findよりfind_by_idでActiveRecord::RecordNotFoundを回避する

Railsでデータをfindする時、該当件数が0件の時は、ActiveRecord::RecordNotFoundな例外になってしまうので、

rescue ActiveRecord::RecordNotFound

で例外処理をしなくてはならない。
これがずっと面倒だなぁとおもってたら、なんとfind_by_idを使えば、nilが返るので

user = User.find_by_id(params[:id])
unless user then
  # 0件のときの処理
end

と使えるらしい!!
これからは、find_by_*** を使います。。。

追記

http://blogs.yahoo.co.jp/killer2kmonday/16884102.html
おっと、ココ見たら、findで例外になるのは、

Model.find(id)

のようにidを指定したときだけだった。

Model.find(:first,:conditions=>["name=?",name]) #=> nil

こんな感じで使えばnilが返るのか〜。