В моем контроллере приложений есть следующее:
before_filter :set_current_subdomain
protected
def set_current_subdomain
Thread.current[:current_subdomain] = current_subdomain
@account = Account.find_by_subdomain(current_subdomain)
end
def current_subdomain
request.subdomain
end
а затем в некоторых из моих моделей:
default_scope :conditions => { :account_id => (Thread.current[:account].id unless Thread.current[:account].nil?) }
Теперь это работает - иногда. Например, я загружаю индексный метод и возвращаю список записей с применяемой областью, но иногда иногда получаю пустой список, поскольку Thread.current [: account_id] выводится как ноль, даже если запросы, запрошенные ранее в запросе, работают используя то же значение.
Вопрос в том, почему это не работает, и есть ли лучший способ установить переменную глобальную для текущего запроса?