2010-08-14 12 views
12

Tengo algo de una situación única, si tuviera un formulario con una casilla de verificación para cada estado (como en los estados de EE. UU., Dicen 50 estados), realmente no quiero para agregar 50 columnas a mi base de datos, ¿cómo puedo almacenarlas en una matriz en una sola columna?Almacenando una matriz en la base de datos en ruby ​​on rails

Siento que he visto esto hecho, pero me está costando poner mi dedo en la implementación.

+0

Puede usar 'states * ';'' and 'states.split ';' ', y asegúrese de que los puntos y comas no aparezcan en' states'. – Zaz

Respuesta

21

ActiveRecord::Base.serialize. Directo desde los raíles documentos:

class User < ActiveRecord::Base 
    serialize :preferences 
end 

user = User.create(:preferences => { "background" => "black", "display" => large }) 
User.find(user.id).preferences # => { "background" => "black", "display" => large } 
+0

Me gusta su respuesta Solo estoy teniendo dificultades para guardar la matriz en la columna ahora. –

+4

Si está utilizando una columna existente, es posible que necesite cambiar el tipo de columna a: texto para que se ajuste a su matriz. (Verifique su_a.to_yaml.length) – jdeseno

4

También puede configurar una tabla de estados con muchas relaciones entre el usuario y el estado. Esto haría que las consultas sean más eficientes.

Cuestiones relacionadas