Je lance un site Web Ruby on Rails qui a plusieurs noms de domaine. J'ai une table "site Web" dans la base de données qui stocke les valeurs de configuration liées à chaque nom de domaine:Une configuration par nom de domaine sur la même application. Comment accéder facilement aux valeurs de configuration des modèles?
Site
- domaine
- Nom
- tagline
- admin_email
- etc .. .
en ce moment, je charger l'objet d'un site Web au début de chaque demande (before_filter) dans mon ApplicationController:
@website = Website.find_by_domain (request.host)
Le problème est quand j'ai besoin d'accéder à l'objet @website de méthodes de mon modèle. Je voudrais éviter d'avoir à passer @website partout. La meilleure solution serait d'avoir quelque chose de similaire à APP_CONFIG mais par nom de domaine.
def sample_model_property
- - "! #{@website.name} est un grand site Web"
fin
Comment voulez-vous faire?
Est-ce que Website.current_website ne pointerait pas vers le même objet sur tous mes sites si je cours sur la même application? – Aymeric
Cela correspond à mon commentaire "thread safe". Dans un seul processus, l'environnement d'un seul thread, vous pouvez utiliser une variable globale comme celle-ci avec peu de risques. Si vous avez plusieurs demandes traitées simultanément cela ne fonctionnera pas. C'est en partie pourquoi le passage à chaque fois est la méthode la plus sûre, aussi agaçante que cela puisse être. – tadman