Не используйте переменные 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] выходит как ноль, даже если запросы ранее в запросе работают используя то же значение.

Вопрос в том, почему это не работает, и есть ли лучший способ установить глобальную переменную для текущего запроса?

Ответы на вопрос(1)

Ваш ответ на вопрос