2010-04-21 7 views
20

J'envisage d'utiliser MongoDB (mongo-mapper) pour une partie de l'application de mes rails. Je ne suis pas prêt à aller MongoDB entier parce qu'il y a trop de gemmes utiles qui dépendent d'une base de données traditionnelle. Cela étant dit, certaines parties de mon application seraient idéales pour tirer parti d'une base de données de documents.Comment mélanger mongodb et un db traditionnel dans Rails?

Quelqu'un a-t-il réussi à mélanger les deux approches? Comment liez-vous des modèles d'activationecord avec des modèles mongomapper?

+0

À quels gemmes pensez-vous? Je migre actuellement mon application de MySQL vers MongoDB. Je pensais à faire une approche hybride comme la vôtre, mais plus j'en apprenais sur MongoDB, plus je me rendais compte que j'aurais d'énormes avantages (dans mon cas) à tout migrer. Certaines des gemmes que vous souhaitez laisser en arrière pourraient ne pas être nécessaires dans le monde NoSQL. –

+0

C'est ce que j'utilise maintenant: acts_as_versioned, formtastic, legs, trombone, cancan. Je * pense * que beaucoup d'entre eux auront besoin d'ajustements significatifs pour se mettre au travail avec mongo – Jonathan

+1

Devise et paperclip travaillent tous les deux avec Mongoid. Devise avait l'habitude de travailler avec MongoMapper mais je pense qu'ils l'ont sorti. Je ne sais pas à propos de cancan, mais Mongoid a un support de versionnage de base: http://mongoid.org/docs/extras – MrKurt

Répondre

9

MongoMapper n'implémente pas encore ActiveModel, mais je pense qu'il y a quelques forks sur github qui le font. Vous pouvez utiliser Mongoid à la place (ce qui est le cas) et vos relations entre docs Mongoid et entrées ActiveRecord fonctionneraient comme par magie. Je sais qu'un certain nombre de personnes le font. Cela dit, je ne voudrais pas les mélanger à moins que je devais absolument avoir un SGBDR pour une raison quelconque.

+0

Il semble que Mongoid implémentant ActiveModel donne l'impression que c'est le chemin à parcourir. Je vais tenter le coup ce week-end. Je rapporterai. Merci – Jonathan

+0

Je suis allé avec Mongoid, et porté à une approche tout NoSql. Assez content du résultat. – Jonathan

+1

MongoMapper implémente maintenant ActiveModel à partir de la version 0.9, conformément à la FAQ en cours. –

2

http://railscasts.com/episodes/194-mongodb-and-mongomapper http://www.mongodb.org/display/DOCS/Object+Mappers+for+Ruby+and+MongoDB http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails http://www.mongodb.org/display/DOCS/Ruby+Language+Center

Vous devez mixin mongomapper avec la classe modèle Cela vous donne la liberté de définir les paires clé-valeur autre que activerecord

include MongoMapper::Document 

simple comme bonjour je pense .

+0

Mais les modèles ne doivent-ils pas hériter de MongoID? Ce n'est pas possible maintenant parce que ces modèles héritent de AR à droite? –

+0

Comment cela ressemble-t-il? http://blog.memamsa.com/2010/07/09/mixing-in-mongodb – ramonrails