Не используйте переменные Thread, если у вас нет очень веских причин. Это очень плохая форма. Будущие версии Rails могут использовать несколько потоков, поэтому вы никогда не должны предполагать, что вам не нужно.
м контроллере приложения есть следующее:
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] выходит как ноль, даже если запросы ранее в запросе работают используя то же значение.
Вопрос в том, почему это не работает, и есть ли лучший способ установить глобальную переменную для текущего запроса?