2013-10-08 4 views
1

Каков наилучший способ хранения данных между двумя действиями контроллера?Хранить данные между действиями

Пример:

  1. У меня есть большой массив сообщений ид ["2907", "2334", "2309",.... N] я создать его в первом этапе подтверждения и перейти ко второму шагу к другому действию контроллера.
  2. Другие данные рендеринга действий контроллера (календарь, группы), я выбираю дату в календаре, выбираю группу и создаю еще один массив данных даты и времени, чтобы подтвердить и перейти к другому действию.
  3. Другое действие, управляемое этим массивом и массивом Идентификатор отправляет дату и возвращает данные, которые я хочу сохранить после подтверждения, безопасные данные в БД и очистить весь массив от сеанса.

Я хранил все массивы между действиями в сеансе, как session[:posts_ids] = params[:posts_ids] и flash[:date_day] ||= params[:date_day]. Я думаю, что это не работает для действительно большого массива данных. Может быть, лучший способ сохранить его в redis?

ответ

4

Это в значительной степени на основе мнений, но я думаю, что две ваши лучшие варианты:

  1. Использование Redis, Memcached или какой-либо другой стороне сервера кэширование решение для хранения объектов в памяти, пока они вам не нужны.
  2. Сделайте свое приложение более ajax-y и сделайте весь выбор и временный сохранение этих массивов на стороне клиента.

Размер сеанса ограничен базовой стратегией, а не жестким пределом для сеансов в целом. CookieStore является значением по умолчанию и позволит ~ 4k данных, потому что куки-файлы браузера ограничены этим размером. Если вы используете сеансы с поддержкой базы данных, вы ограничены только вашим сервером базы данных.

Вы также должны иметь в виду, что использование сеансов для хранения данных между запросами не очень RESTful.

+1

+1 для non-RESTful заявки на сессию. –

Смежные вопросы