Одна конфигурация для доменного имени в одном приложении. Как легко получить доступ к значениям конфигурации из моделей? - PullRequest
1 голос
/ 01 июня 2010

Я использую веб-сайт Ruby on Rails с несколькими доменными именами. У меня есть таблица «Веб-сайт» в базе данных, в которой хранятся значения конфигурации, связанные с каждым доменным именем:

Сайт
- домен
- имя
- Слоган
- admin_email
- и т. д.

В данный момент я загружаю объект сайта в начале каждого запроса (before_filter) в свой ApplicationController:

@ website = Website.find_by_domain (request.host)

Проблема в том, что мне нужно получить доступ к объекту @website из методов моей модели. Я бы хотел, чтобы везде не проходили @website. Лучшим решением было бы иметь что-то похожее на APP_CONFIG, но для каждого доменного имени.

def sample_model_property
- "#ndom@website.name} - отличный сайт!"
конец

Как бы вы это сделали?

1 Ответ

0 голосов
/ 01 июня 2010

Если это переменная экземпляра контроллера, то вы должны иметь доступ к @website везде, где вам это требуется, как в доменах Controller, так и View. Если вам нужно что-то протолкнуть в пространство модели с той же емкостью, вы должны либо передать его, либо взломать, используя метод model_helper .

Вместо этого вы можете использовать своего рода одноэлементный метод в классе вашего сайта, например:

class Website < ActiveRecord::Base
  cattr_accessor :current_website
end

Затем в контроллере вы можете делать такие вещи, как:

before_filter :load_current_website

def load_current_website
  Website.current_website = Website.find_by_domain(request.host)
end

Таким образом, вы можете ссылаться на Website.current_website в любом месте пространства модели, и все должно быть синхронизировано. Обратите внимание, что это может быть не полностью поточно-ориентированным и должно быть тщательно протестировано в производственной среде перед его использованием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...