2011-04-20 12 views
5

Estoy construyendo una aplicación de Rails 3 que tendrá configuraciones específicas del usuario (apariencia, funcionalidad, etc.) y estaba buscando un consejo simple sobre cuál es la forma preferida de implementar las configuraciones.¿Cuál es la forma preferida de implementar configuraciones en una aplicación Ruby on Rails 3?

¿Prefiere tener un modelo dedicado para esto? ¿Son aceptables los hashes para almacenar en un campo de base de datos? ¿Prefieres cookies o sesiones sobre la base de datos? ¿Es mejor un objeto de ITS?

Quizás enumere algunos pros o contras para cada método diferente si puede.

Gracias.

Respuesta

3

tengo la misma situación que usted, configuración específica del usuario. En mis aplicaciones, prefiero crear un modelo para almacenar la configuración del usuario. Tengo un modelo de usuario y un modelo de configuración de usuario, donde la relación es uno a uno.

class User < ActiveRecord::Base 
    has_one :user_configuration 
end 

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

O si lo prefiere el uso de hash y lo almacena en la base de datos es posible marcar su campo como serializar

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

se puede ver en http://api.rubyonrails.org/classes/ActiveRecord/Base.html

pros: - Hasta ahora 've no tiene ningún problema, es fácil de mantener

contras: - solicitar más tabla en la base de datos

Puede ser que pueda ayudarlo gracias.

+0

Gracias! Esto es lo que estaba buscando. Estoy seguro de que todo depende del tamaño del proyecto también. –

+0

He decidido seguir con el método del modelo. En última instancia, creo que será más fácil de mantener a largo plazo a medida que la aplicación crezca. También he leído que la serialización tiene sus límites en función del tamaño del campo de texto en la base de datos que está almacenando, que tiene el potencial de ser otra cosa de la que preocuparse a partir de la devolución de datos corruptos. En general, creo que los problemas de rendimiento se pueden mitigar y, en el peor de los casos, se puede deslocalizar el par de almacenamiento clave/valor a un servicio para facilitar la carga en la base de datos. –

2

Si quieres un poco de solución estructurada puede o bien echar un vistazo a:

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

Gracias por señalar estas gemas. Puedo probar algunos de estos después de haberlo bajado dentro de los rieles. –

Cuestiones relacionadas