加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在控制器中的多个操作中存储实例变量?

发布时间:2020-12-16 20:18:41 所属栏目:百科 来源:网络整理
导读:说我想在控制器中存储一些变量.我想在一个动作中初始化它,在另一个动作中增加它,然后再读取它.只要使用@foo声明此变量就不起作用,因为@foo在创建它的操作被渲染后就会死机. 我不希望将此变量存储在模型中. 有没有办法保存这个变量,除了将它存储在会话中? 看
说我想在控制器中存储一些变量.我想在一个动作中初始化它,在另一个动作中增加它,然后再读取它.只要使用@foo声明此变量就不起作用,因为@foo在创建它的操作被渲染后就会死机.
我不希望将此变量存储在模型中.

有没有办法保存这个变量,除了将它存储在会话中?
看来我已经遇到这个简单的问题了几次,我想知道解决它的最好方式.

解决方法

不是真的.每个调用控制器动作都是无状态的.控制器操作完成后,无可用.为每个请求创建一个新的控制器实例,然后在请求结束时被丢弃.

如果您不想将其存储在会话或数据库模型中,则如果希望该变量特定于特定会话,则没有很多选项.

如果在所有会话中都是全局的,那么可以把它放在一个@@ class_variable而不是@instance_variable中,但是一旦你开始拥有多个Rails进程(每个都有自己的副本),或者如果你在线程安全模式下运行,最终可能会导致恶意的并发错误.

我想你可以看看像memcached这样的东西,但是您仍然需要将其键入某个user_id或其他会话标记(除非是全局的)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读