2011-04-20 5 views
5

Je construis une application Rails 3 qui aura des paramètres spécifiques à l'utilisateur (apparence, fonctionnalité, etc) et je cherchais des conseils simples sur la meilleure façon d'implémenter les paramètres.Quelle est la meilleure façon d'implémenter les paramètres dans une application Ruby on Rails 3?

Préférez-vous avoir un modèle dédié pour ce genre de choses? Les hachages sont-ils acceptables pour stocker dans un champ de base de données? Préférez-vous les cookies ou les sessions sur la base de données? Est-ce qu'un objet STI est le meilleur?

Peut-être énumérer certains avantages ou inconvénients à chaque méthode différente si vous le pouvez.

Merci.

Répondre

3

J'ai la même situation que vous, réglage spécifique à l'utilisateur. Dans mes applications, je préfère créer un modèle pour stocker la configuration de l'utilisateur dans le modèle utilisateur et dans le modèle de configuration utilisateur, où la relation est un à un.

class User < ActiveRecord::Base 
    has_one :user_configuration 
end 

class UserConfiguration < ActiveRecord::Base 
    belongs_to :user, :dependent => :destroy 
end 

Ou si vous préférez utiliser Hash et de les stocker dans la base de données est possible de marquer votre champ comme serialize

class User < ActiveRecord::Base 
    serialize :preferences, Hash 
end 

vous pouvez le voir à http://api.rubyonrails.org/classes/ActiveRecord/Base.html

pros: - jusqu'à présent i 've n'a aucun problème, il facile à la maintenance

contre: - demande plus de table dans la base de données

Peut être que cela pourrait vous aider merci.

+0

Merci! C'est ce que je cherchais. Je suis sûr que tout dépend de la taille du projet. –

+0

J'ai décidé d'aller avec la méthode du modèle. Je pense que cela sera finalement plus facile à maintenir à long terme à mesure que l'application se développera. J'ai également lu que la sérialisation a ses limites basées sur la taille du champ de texte dans la base de données que vous stockez dans celui qui a le potentiel d'être une autre chose à s'inquiéter de retour de données corrompues. Dans l'ensemble, je crois que les problèmes de performances peuvent être atténués et, si le pire se produit, vous pouvez délocaliser la paire clé/valeur de stockage vers un service pour faciliter la charge de la base de données. –

2

Si vous voulez une solution structurée, vous pouvez consulter:

  1. Configurable Engine
  2. ou rails-settings
+0

Merci d'avoir signalé ces gemmes. J'essaierai peut-être d'en essayer quelques-unes après l'avoir moi-même enfoncé dans les rails. –

Questions connexes