Volcar de BBDD a Array


#1

Hola, tengo algo entre manos que debería ser sencillo, pero no lo acabo
de sacar…

Tengo una SQL que me devuelve cuatro registros, cada uno de ellos con un
sólo campo de texto (para cargar una lista de opciones):

“OpcA”, “OpcB”, “OpcC”, “OpcD”

Lo que quisiera es guardarme el resultado en forma de array de strings,
que es como espera recibirlo la función que los procesa:
[“OpcA”, “OpcB”, “OpcC”, “OpcD”]

Pero el Opciones.find() lo que me genera es un array de objetos:
[#<Opcion nombre: “OpcA”>, #<Opcion nombre: “OpcB”>, #<Opcion nombre:
“OpcC”>, #<Opcion nombre: “OpcD”>]

¿sabéis cómo puedo atacar a la BBDD para sacar un array de strings, sin
vincularlo a objetos? En otros lenguajes es trivial, pero en RoR no lo
encuentro…

s2


#2

2008/11/4 Fernando C. removed_email_address@domain.invalid:

[“OpcA”, “OpcB”, “OpcC”, “OpcD”]

Pero el Opciones.find() lo que me genera es un array de objetos:
[#<Opcion nombre: “OpcA”>, #<Opcion nombre: “OpcB”>, #<Opcion nombre:
“OpcC”>, #<Opcion nombre: “OpcD”>]

¿sabéis cómo puedo atacar a la BBDD para sacar un array de strings, sin
vincularlo a objetos? En otros lenguajes es trivial, pero en RoR no lo
encuentro…

http://apidock.com/ruby/Array/map


Sergio Gil Pérez de la Manga
e-mail > removed_email_address@domain.invalid
blog > http://www.lacoctelera.com/porras
now > http://twitter.com/porras


#3

En estos casos es muy útil la extensión to_proc que hace rails a la
clase Symbol:

http://api.rubyonrails.org/classes/Symbol.html

En tu caso:

Opciones.find(:all).collect(&:nombre)


#4

Ok, muchas gracias!! Ya sabía yo que no tendría que montar un bucle para
esto…

s2


#5

Eso creo que lo podrias hacer con serialize.

Dentro de tu modelo pones:

 serialize :attributo

Y a partir de ahí le pues meter objetos ruby.

On 04/11/2008, at 19:31, Fernando C.
<removed_email_address@domain.invalid


#6

Fernando C. escribió:

[“OpcA”, “OpcB”, “OpcC”, “OpcD”]

A parte de como ya han comentado podrias usar select_values [1] de la
conexion de ActiveRecord

ActiveRecord::Base.connection.select_values(“SELECT column FROM models”)
=> [“value”,“value”,…]

[1]
http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#M001465