Cuando llamo a un find con un id, se convierte en un find específico y arroja un error RecordNotFound.Cómo emitir un 'hallazgo' o 'dónde' que genera un RecordNotFound
Foo::Bar.find(123) # RecordNotFound if no Bar with id 123 exists.
Pero cuando llamo a que, con condiciones, consigo nula si no se encuentra:
Foo::Bar.find(:first, :conditions => [ "lower(name) = ?", name.downcase ])
quiero tal búsqueda condicional para elevar un error también. Sé que puedo hacer:
Foo::Bar.find_by_name!("CocktailBar") #=> raises Recordnotfount if not not found.
Pero eso tiene condiciones sólo muy simples. El mío necesita un poco más de complejidad; en realidad algo así como:
Foo.Bar.select{ |pm| pm.name.downcase =~ /cocktail/}.first
Y, si no se encuentra nada, quiero que levante el error RecordNotFound. ¿Es eso posible? ¿O debería simplemente agregar algún código para verificar contra nil? y si es nulo? elevar el error yo mismo? Y si es así, ¿cómo hago eso en Rails 3?
nunca supo de la 'primera' método, gracias por mencionarlo. – bricker
@lulalala Gracias por extender mi respuesta. No me importó mencionar los métodos 'find_by' porque el autor de la pregunta explícitamente dice que los conoce y la pregunta no es exactamente sobre esto. – RocketR
@RocketR Me acabo de dar cuenta en el mencionado en cuestión ahora. Creo que me estaba enfocando en el título de la pregunta. – lulalala