2010-10-12 5 views
0

Je suis en train d'écrire une application rapide pour un utilisateur de suivre leurs factures quotidiennes (à des fins de suivi de l'argent). Je souhaite que l'utilisateur puisse définir ses propres catégories auxquelles une facture peut s'appliquer. J'essaie cependant de décider de la meilleure façon de modéliser cela et aussi de valider les catégories comme uniques.Mongo Question de conception avec Rails/Mongoid pour une application de suivi de facture

Ma première pensée était la suivante:

class User 
    include Mongoid::Document 
    embeds_many :bills 

    field :categories, :type => Array 
end 

class Bill 
    include Mongoid::Document 
    embeded_in :user, :inverse_of => :bills 

    field :category 
    index :category 
end 

Ainsi, un utilisateur peut ajouter des catégories, tout comme les chaînes, et quand ils ajoutent un projet de loi, ils choisiront de leurs catégories disponibles pour le projet de loi.

Alors, quelques questions:

  1. Cela vous semble comme une bonne conception? Je ne pense pas qu'il soit nécessaire de définir un modèle de catégorie réel car il s'agit littéralement d'une chaîne utilisée pour indexer des factures, mais je ne suis pas sûr qu'il y ait d'autres avantages pour un modèle séparé

  2. Comment valider_unicité de: catégories dans mon modèle d'utilisateur. Je ne pense pas que cela fonctionne sur des objets de ce type, mais je peux me tromper. Je ne veux pas qu'un utilisateur crée des catégories avec le même nom. Je suppose que cela pourrait être l'avantage d'un modèle séparé, intégré dans l'utilisateur, mais encore une fois, il semble que plus de travail que nécessaire.

Quelqu'un peut-il me dire mes meilleures options ici pour valider un utilisateur des catégories uniques (mais les utilisateurs peuvent avoir les mêmes catégories, je ne se soucient pas de toute évidence à ce sujet, tout simplement unique dans le cadre d'un seul utilisateur)

Répondre

1

[Mise à jour]

La conception semble appropriée. D'une manière spécifique Rails comment valideriez-vous l'unicité? Lorsque vous ajoutez une catégorie, tirez la liste et effectuez une vérification indexOf pour vous assurer qu'elle n'existe pas. Si cela ne fait que rebondir une erreur.

Je ne suis pas un gars Rails, laissez-moi savoir si je suis hors piste ou quelque chose. Je ne suis pas sûr que MongoDB serait le meilleur choix de moteurs de stockage pour cela. Il vaudrait mieux utiliser MySQL avec un tableau de catégories.

cogne MongoDB:

  • d'acide transactions
  • Pas de durabilité serveur unique
  • Non relationnelle (vous voulez relationnelle pour une application de suivi des factures)
+0

ce qui est plus d'un exercice pour le plaisir, je n'écris pas une application d'entreprise ou quoi que ce soit, je voulais juste apprendre mongo avec rails3 et je pensais qu'une petite application rapide comme ce serait un exercice amusant – brad

+0

@brad: Je ne suis pas un gars Rails, mais je serais de stocker des catégories en ligne dans un tableau sous l'objet utilisateur. Laissez-moi mettre à jour ma réponse. –

+0

merci pour la réponse, j'aurais dû mentionner que je sais évidemment comment faire cela manuellement avec un 'indexOf' ou' include? ', N'était tout simplement pas sûr s'il y avait une façon plus précise de faire cela. Je pourrais finir par sélectionner cette réponse, car elle répond techniquement à mon Q, attendra un peu. – brad