2010-05-08 2 views
0

J'ai forme pour un modèle A, qui a obtenu quelques champs:Enregistrer plusieurs données de formulaire de sélection dans db

  • carreaux
  • Description
  • ...
  • couleurs

les couleurs sont sélectionnées parmi plusieurs sélection et les options sont ['red', 'green', 'blue', 'yellow']. L'utilisateur peut choisir autant de couleurs qu'il le souhaite. Je ne pense pas que la relation Color modèle et has_many est une bonne solution ici pour stocker les données de couleurs dans model A. Donc, la question est:

Comment stocker plusieurs données en db pour de tels formulaires de sélection multiples?

Répondre

1

Si vous avez un nombre de couleurs limité, vous pouvez le stocker sous forme de chaîne: "rby" signifie que l'utilisateur a sélectionné le rouge, le bleu et le jaune. Bien sûr, vous pouvez utiliser n'importe quel caractère pour représenter n'importe quelle couleur. Dans cette solution, vous pouvez facilement stocker environ 30-40 couleurs (ce qui est probablement suffisant). Vous pouvez également les stocker en tant que mots séparés par des virgules: "rouge, bleu, jaune" et lorsque vous le récupérez dans Rails, faites simplement @a.colors.split(',') et vous obtiendrez un tableau de noms de couleurs.

Bien que si vous voulez le stocker comme une chaîne, il vous oblige à écrire plus de code dans les contrôleurs pour traduire champ colors à cocher et de l'autre côté.

+0

C'est ainsi que je travaille maintenant. Type de csv,: attr_accessor et quelques méthodes supplémentaires dans le modèle. Mais maintenant j'essaie de comprendre s'il existe une autre solution utilisant la sérialisation ou d'autres trucs exotiques. Quoi qu'il en soit, merci pour vos commentaires :) – fl00r

Questions connexes