On Fri, Sep 5, 2008 at 12:26, Miguel Angel Calleja L.
[email protected] wrote:
Hola lista, estoy intentando comprobar si un array contiene un valor. Lo
normal es:
array= {a,b,c}
array.include?(‘a’)
Una cosilla, las llaves {} no definen un array, definen un hash,
aunque esa sintaxis no se si funcionarÃa para definir un hash. Si
quieres que ese pequeño codigo funcione deberÃa ser:
array = [‘a’, ‘b’, ‘c’]
o
array = %w(a b c)
Pero mi array es un array de hashes, podrÃa hacer alguna chapucilla pero
seguro que se puede hacer simple pero me he hecho un lio:
Mi array:
[#<Tagging id: 28, tag_id: 26, taggable_id: 17, taggable_type:
“Documento”, created_at: “2008-09-05 11:33:09”>, #<Tagging id: 29,
tag_id: 27, taggable_id: 17, taggable_type: “Documento”, created_at:
“2008-09-05 11:33:09”>, #<Tagging id: 30, tag_id: 24, taggable_id: 17,
taggable_type: “Documento”, created_at: “2008-09-05 11:33:09”>]
Y de nuevo, eso no es un “array de hashes”. Hasta donde yo llego es un
array de objetos Tagging.
Cómo puedo decirle si este array contiene el tag_id 24 por ejemplo? No
digo que me lo resolveis, si alguno lo hace se lo agradezco, si me
podeis aconsejar también, gracias
Si ya tienes el array de esa forma, deberÃas mirar el método find de
Enumerable (Array tiene todos los métodos de Enumerable disponibles):
http://apidock.com/ruby/Enumerable/find. Dentro del bloque podrÃas
comprobar el tag_id de cada objeto Tagging. Si no encuentra uno con el
id buscado devolverÃa nil.
De todas formas, si ese Array viene de una asociación en un objeto
ActiveRecord puedes utilizar find sobre la asociación para tener más
condiciones de busqueda, como que el tag_id sea uno concreto (si vas a
reutilizar esas condiciones en diferentes partes del código lo ideal
serÃa crear un named_scope).
Suerte.