Y a-t-il une méthode rubis ou activeCord qui peut écrire et lire un hachage vers et depuis un champ de base de données?
J'ai besoin d'écrire un utilitaire Web pour accepter les données post et enregistrez-la dans une base de données, puis plus tard sur la traction it de la base de données dans sa forme de hachage d'origine. Mais idéalement sans "savoir" quelle est la structure. En d'autres termes, mon magasin de données doit être indépendant de tout ensemble particulier de clés de hachage. P>
par exemple, une fois que l'application externe peut poster à mon application: p> mais une autre fois que l'application externe peut poster à mon application: p> donc mon utilitaire doit enregistrer un hachage arbitraire à un texte code > Champ dans la base de données, puis, plus tard, recréez le hachage de ce qui a été sauvé. p> p>
5 Réponses :
Vous recherchez sérialisation . Cela vous aidera à faire exactement ce que vous voulez. P>
Il y a deux façons de faire ceci:
Le problème avec la première approche est que la recherche et la manipulation sont difficiles et coûteuses. Par exemple, le préfixe A "0" avant que le numéro de téléphone de tous les employés travaillant dans FOO Inc. soit un cauchemar, comparé au stockage des données en format tabulaire ordinaire. P>
Votre schéma serait: P >
employees: 1, 2012-01-01, 2012-01-01 employee_details (1, 1, "company", "Foo Inc"), (2, 1, "telephone", "555-5555")
Vous pouvez utiliser la sérialisation avec 3 options : maréchal Format binaire, formats de stockage de données lisibles par l'homme de YAML et JSON. p>
Une fois que vous essayez de chacune des méthodes, n'oubliez pas de mesurer le temps de sérialiser et de désérialiser également. Si vous devez tirer des données dans le format d'origine, JSON est le bon choix à utiliser, car vous n'avez pas besoin de le désérialiser, mais utilisez-le comme une chaîne elle-même. P>
rails 4 ajoute la prise en charge du type de données Si vous utilisez des rails 4 et Postgres, vous pouvez utiliser < Code> hstore code> dans votre migration: p> cette commande exécute activera HSTORE dans Postgres, de sorte que vous ne devez donc le faire une fois. P> Cela vous permettra de stocker un hachage dans HSTORE code> qui vous permettra d'ajouter des haubes directement dans votre base de données (Postgres).
: colonne code> comme vous le feriez tout autre type de données. P> p>
Est-ce que cela prend en charge les hachages nuls / json?
rails 4 a une nouvelle fonctionnalité appelée Store , afin que vous puissiez facilement utiliser Cela résoudra votre problème. Vous pouvez définir un accesseur pour cela et il est recommandé de déclarer la colonne de base de données utilisée pour le magasin Serialized en tant que texte, il y a donc beaucoup de place. Original Exemple: