【问题标题】:Updating and accessing a session with Ruby on Rails使用 Ruby on Rails 更新和访问会话
【发布时间】:2019-06-05 13:36:40
【问题描述】:

我正在使用 ruby​​ on rails 2.5。

我有一个对象“payment_plan”。这个对象可以随着切换行为的改变而改变,我需要在整个会话中保持这个对象的活动状态,最后它应该保存在我的mongo db 中。我需要始终访问对象的最新状态。控制器应该能够更新对象,并且视图应该能够访问对象的最新状态。

任何关于如何做这样的事情的见解都会很棒:)

我尝试在应用程序控制器中创建一个辅助函数,但在视图中访问它时遇到问题。

另外我不喜欢将对象的状态保存在数据库中,因为以后会调用太多的数据库。

【问题讨论】:

  • 请贴一些相关代码。

标签: ruby-on-rails ruby ruby-on-rails-3 session session-variables


【解决方案1】:

要从视图中访问控制器辅助函数,请将其定义为辅助函数:

class SomeController < ApplicationController
   helper def some_helper
   end
end

至于在会话中存储一些数据 - 没关系,rails 为session[:my_object_prop] = 1/session[:my_object_prop] (see in official guide) 提供了很好的会话存储机制

但请记住:

  • 默认情况下,会话存储在 cookie 中,客户端浏览器的每个请求都会在标头中传递给您的服务器(即使是图像,如果它们在同一个域中),因此只在其中保存少量数据是可行的.
  • 用户可以清除他们的 cookie,数据会丢失(这通常没问题)
  • 与后者相反 - 用户可能会使用旧版本代码中的会话数据访问您的应用

【讨论】:

    【解决方案2】:

    非常感谢,很有帮助!

    另一个问题,我可以在设置后覆盖会话值吗? 例如 session[:plan_id]="plan_id_1" 他们在运行中进一步做这样的事情: session[:plan_id]="plan_id_2"

    谢谢!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 2011-12-10
      • 1970-01-01
      相关资源
      最近更新 更多