find() with nil when there are no records

Eqbal picture Eqbal · Mar 7, 2012 · Viewed 43.7k times · Source

In my current rails program when I use something like

 user = User.find(10)

When there is no user with ID=10 , I will have exception like :

ActiveRecord::RecordNotFound: Couldn't find User with ID=10

Can I get nil instead of raising exception so when I do something like :

unless user = Challenge.find(10)
  puts "some error msg"         
end

I just want to get nil when there is no records and I don't want to use begin/rescue

Thanks

Answer

apneadiving picture apneadiving · Mar 7, 2012

Yes, just do:

Challenge.find_by_id(10)

For Rails 4 and 5:

Challenge.find_by(id: 10)