Когда я вызываю находку с идентификатором, она становится целевой находкой и выдает ошибку RecordNotFound.
Foo::Bar.find(123) # RecordNotFound if no Bar with id 123 exists.
Но когда я звоню с условиями, я получаю ноль, если не найден:
Foo::Bar.find(:first, :conditions => [ "lower(name) = ?", name.downcase ])
Я хочу, чтобы такой условный поиск тоже выдавал ошибку. Я знаю, что могу сделать:
Foo::Bar.find_by_name!("CocktailBar") #=> raises Recordnotfount if not not found.
Но это только очень простые условия. Моя нужна немного больше сложности; на самом деле что-то вроде:
Foo.Bar.select{ |pm| pm.name.downcase =~ /cocktail/}.first
И, если ничего не найдено, я хочу, чтобы он вызвал ошибку RecordNotFound. Это возможно вообще? Или я должен просто добавить код для проверки на ноль? а если ноль? поднять ошибку сам? И если да, то как мне это сделать в Rails 3?