2010-08-14 3 views
12

J'ai une situation assez unique, si j'avais un formulaire avec une case à cocher pour chaque état (comme dans les états américains, donc 50 états disent), je ne veux pas vraiment pour ajouter 50 colonnes à mon db, comment puis-je les stocker dans un tableau dans une seule colonne? J'ai l'impression d'avoir vu cela, mais j'ai du mal à mettre le doigt sur la mise en œuvre.Stocker un tableau dans la base de données dans ruby ​​sur rails

+0

Vous pouvez utiliser 'states * ',' 'et' states.split'; '', et vous assurer que les points-virgules n'apparaissent pas dans' states'. – Zaz

Répondre

21

ActiveRecord::Base.serialize. Directement à partir des rails docs:

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

J'aime votre réponse J'ai juste du mal à l'obtenir pour enregistrer le tableau dans la colonne maintenant. –

+4

Si vous utilisez une colonne existante, vous devrez peut-être changer le type de colonne en: texte pour s'adapter à votre tableau. (Vérifiez votre_a.to_yaml.length.) – jdeseno

4

Vous pouvez également configurer une table States avec de nombreuses relations entre User et State. Cela rendrait les requêtes plus efficaces.

Questions connexes