Есть ли в Rails способ сбрасывать переменные класса между запросами? - PullRequest
1 голос
/ 12 ноября 2011

Я понял , думая о переменных пользователя, пароля и сайта в ActiveResource :: Base , что они могут быть изменены по одному запросу и останутся неизменными при следующем запросе.Это кажется нежелательным поведением и, возможно, широко распространенной проблемой, поскольку оно относится ко всему использованию переменных / атрибутов класса.

Предоставляет ли Rails механизм для очистки изменений в состоянии уровня класса (например, сброс до значения по умолчанию), чтобы каждый запрос запускался в первоначальном состоянии?

Если нет, можно ли добавить способ инициализации переменных класса, который будет повторно применяться в начале каждого запроса?Это можно сочетать с поточно-ориентированным хранилищем, что делает переменные класса гораздо менее проблематичными.Возможная модификация class_attribute ?

Обновление:

Как я описал в связанный вопрос выше , конкретный случайэто привлекло мое внимание к тому факту, что я устанавливал ActiveResource :: Base.user и пароль для каждого пользователя.Если мне когда-нибудь не удастся их сбросить, это будет означать, что запросы REST от имени одного пользователя будут выполняться с использованием учетных данных другого при последующих загрузках страницы.

1 Ответ

0 голосов
/ 12 ноября 2011

Просто из любопытства, вы можете привести конкретный пример того, почему вы хотите это сделать?На первый взгляд кажется, что вы запрашиваете изменение переменной, поэтому Rails делает то, о чем вы просите.

Что касается ответа, несколько вариантов:

  • Для переменных нет автоматического режима «переключиться на стандарт», нет.
  • Вы можете вручную сбросить значения в конце каждого действия контроллера, где вы хотите, чтобы это произошло
  • Вы могли бы написать модуль, который делает это (назвал его, act_as_resettable?), А затем включить этот модуль в классы, где вы хотите эту функциональность
...