Vous savez comment certains suiveurs de bogues (et autres logiciels) vous permettent d'ajouter des champs personnalisés?
Typiquement, cela se fait avec une structure de données qui ressemble à ceci: p>
Items ---------- ID | NAME | ITEM_TYPE_ID FieldDefinitions --------------------------------------- ID | ITEM_TYPE_ID | FIELD_NAME | FIELD_TYPE FieldValues --------------------------------------- ID | FIELD_ID | ITEM_ID | VALUE
3 Réponses :
quelque chose comme ...? ou, vous pouvez modifier P> cfh[fv.field_definition.field_name] = fv.value
Utiliser Inject serait probablement une meilleure forme. Comme self.field_values.inject ({}) {| mémo, fv | mémo [fv.field_definition] = fv} ou similaire.
C'est ce que je pensais que j'utilisais ... me demandait s'il y avait une façon plus "rubis" de faire cela ...
La façon habituelle ne serait probablement pas d'utiliser un hachage du tout et d'utiliser simplement les méthodes d'association générées, mais je suppose qu'il y a une raison pour laquelle vous avez choisi particulièrement un hachage ...?
Je pensais à personne.Meta [: Twitter] ou quelque chose du genre. N'hésitez pas à m'éduquer quelque chose de nettoyant :)
Jetez un coup d'œil au ORM sympathique . Cela vous permet de travailler avec MySQL sans schéma. Il a été inspiré par ce Publication du blog sur la façon dont Friendfeed utilise MySQL pour stocker Données schématiques. P>
sympathique remplacerait ActiveCord, bien que vous puissiez utiliser assez facilement les modèles ACTiverecord. p>
Pas exactement ce que je cherche, mais une trouvaille cool néanmoins. +1
Si vous considérez que vous envisagez des données de schéma, vous pouvez envisager d'utiliser une base de données de documents comme Couchdb ou MongoDB (voir railscasts.com/episodes/194-mongodb-and-mongomapper Pour une diffusion Web sur l'utilisation de MongoDB et du gemme Mongomapper dans une application Rails; Ryan Bates est génial BTW).
Oui, je suis définitivement intéressé par cela. Je suis sur Heroku, qui ne fonctionnera pas avec MongoDB.
Si votre intention est d'avoir votre Il vous permet essentiellement d'avoir une colonne Il y a une rubrique "associations polymorphes" dans la documentation de ACTIVERCORD :: Associations :: ClasseMethods . P> FieldDefinition Code> Enregistrés appartenant à Différents modèles forts> différents (par exemple, une colonne
item_id code> qui pointe sur un < Code> SpeekyToyitem Code> ou un
Balloonitem code>) Alors ce que vous voulez est une association polymorphe. P>
item_Type code> (à côté de votre colonne code> item_id code>), qui spécifie ensuite le type d'élément réel qu'il pointe. p>
J'ai l'intention de les avoir sur de nombreux modèles, mais ils hériteront tous d'un article (ou tout ce que ma classe de base finit par être)