9
votes

Comment créer une base de données personnalisable utilisateur (comme Zoho Creator) dans les rails?

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?

J'ai vu quelque chose à propos de la Attribut d'entité-Attribut-Valeur (EAV) mais je ne suis pas sûr que ce soit la meilleure stratégie ou s'il existe un soutien dans les rails pour cela.

S'il y avait un tutoriel dans des rails sur un projet similaire, ce serait génial.

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.


0 commentaires

5 Réponses :




0
votes

Utiliser un magasin de documents comme MongoDB ou CouchDB serait la meilleure voie à suivre, car ils sont moins schémas.


0 commentaires

0
votes

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.

Alternativement, vous pouvez stocker vos données en XML et générer un schéma XML pour valider contre.

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.


0 commentaires

10
votes

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.

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.

donner le Tutoriel MongoDB Ruby une lecture et je suis sûr que vous voudrez Pour essayer.

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.


0 commentaires