J'apprends des rails et la cible de mes expériences consiste à réaliser quelque chose de similaire à Zoho Creator, Flexlist ou MytaSaskhelper, c'est-à-dire une application où l'utilisateur peut créer son propre schéma de base de données et ses propres vues. Quelle est la meilleure stratégie pour poursuivre cela? P>
J'ai vu quelque chose à propos de la S'il y avait un tutoriel dans des rails sur un projet similaire, ce serait génial. P>
Ce n'est probablement pas l'étoile la plus simple d'apprendre une nouvelle langue et un nouveau cadre, mais ce serait quelque chose que je prévois vraiment de faire depuis longtemps. p>
5 Réponses :
Je pense que ce n'est pas exactement ce que vous voulez, mais ce http://github.com/leonb/has_magic_columns_fork < / a> Mais apparemment, cela fait quelque chose de similaire et que vous pouvez avoir une idée de commencer. p>
Il devrait être possible de générer des tables de base de données en envoyant des instructions DDL directement sur le serveur ou en générant une migration dynamique. Ensuite, vous pouvez générer les modèles ActiveCord correspondants à l'aide de la classe.New (activeCord :: base) do ... fin. En principe, cela devrait fonctionner, mais cela doit être fait avec des soins. Mais ce n'est certainement aucun travail pour un débutant. p>
Une deuxième solution pourrait être d'utiliser Mongomapper et MongoDB . Mon idée est d'utiliser une collection pour stocker les lignes de votre table et, étant donné que MongoDB est le schéma, vous pouvez simplement ajouter des attributs. p>
Utiliser un magasin de documents comme MongoDB ou CouchDB serait la meilleure voie à suivre, car ils sont moins schémas. P>
Utilisation d'EntraSTRibuValue vous permet de stocker des données de schéma dans une quantité définie de tables, mais les implications de performance et les problèmes de maintenance que cela crée peut très bien ne pas en valoir la peine. p>
Alternativement, vous pouvez stocker vos données en XML et générer un schéma XML pour valider contre. P>
Toutes les solutions "génériques" auront des problèmes avec des clés étrangères ou d'autres contraintes, sans user de cette validation en mémoire avant le stockage. P>
Votre meilleur pari sera mongodb. Il est facile d'apprendre (car le langage de requête est JavaScript) et fournit un magasin de données moins de schéma. Je créerais un document pour chaque formulaire qui définit la structure du formulaire. Ensuite, chaque fois qu'un utilisateur soumet les données, vous pouvez mettre les données dans une structure générique et la stocker dans une collection basée sur le nom du formulaire. Dans les collections de Mongodb sont comme des tables, mais vous pouvez les créer à la volée. Vous pouvez également créer des index sur la mouche pour rechercher une vitesse. P>
Le problème que vous essayez de résoudre est l'un des cas d'utilisation principale des bases de données orientées de documents que MongoDB est. Il existe plusieurs autres bases de données orientées de documents, mais à mon avis, mongodb a la meilleure API pour le moment. P>
donner le Tutoriel MongoDB Ruby une lecture et je suis sûr que vous voudrez Pour essayer. p>
N'utilisez pas de base de données relationnelle pour le faire. Créer des tables sur la mouche sera misérable et est un danger de sécurité, non seulement pour votre système, mais aussi pour les données de vos utilisateurs. Vous pouvez éviter de créer des tables à la volée en créant un schéma complexe qui suit les structures de formulaire et chaque type de champ nécessiterait sa propre table. Les rails rendent cela moins douloureux avec des associations polymorphes, mais cela n'est certainement pas joli. P>