Обновление и доступ к сеансу с помощью Ruby on Rails - PullRequest
0 голосов
/ 10 января 2019

Я работаю с ruby ​​на рельсах 2.5.

У меня есть объект "payment_plan". Этот объект может меняться с изменяющимся поведением переключателя, и мне нужно поддерживать этот объект в течение всего сеанса, и в конце его следует сохранить в моем mongo дБ. Мне нужно, чтобы получить доступ к последнему состоянию объекта всегда. Контроллер должен иметь возможность обновлять объект, а представление должно иметь доступ к последнему состоянию объекта.

Любое понимание того, как сделать что-то подобное, было бы замечательно :)

Я пытался создать вспомогательную функцию в контроллере приложения, но у меня были проблемы с доступом к нему из представления

Также я предпочитаю не сохранять состояние объекта в БД, потому что это будет слишком много вызовов БД позже.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Большое спасибо, это было очень полезно!

Другой вопрос, могу ли я переопределить значение сеанса после его настройки? например session [: plan_id] = "plan_id_1" и они в дальнейшем в процессе выполнения делают что-то вроде этого: session [: plan_id] = "plan_id_2"

спасибо !!!

0 голосов
/ 10 января 2019

Чтобы получить доступ к вспомогательной функции контроллера из представления, определите ее как вспомогательный:

class SomeController < ApplicationController
   helper def some_helper
   end
end

Что касается хранения некоторых данных в сессии - все в порядке, у rails есть хороший механизм хранения сессии для session[:my_object_prop] = 1 / session[:my_object_prop] ( см. В официальном руководстве )

Но имейте в виду, что:

  • по умолчанию сеанс хранится в файлах cookie, которые передаются в заголовках из клиентского браузера при каждом запросе к вашему серверу (даже к изображениям, если они находятся в одном домене), поэтому практично сохранять там небольшие объемы данных. .
  • Пользователь может очистить свои куки, и данные будут потеряны (обычно это нормально)
  • противоположность последней - пользователь может прийти в ваше приложение с данными сеанса из старой версии вашего кода
...