在 Rails 控制器中存储对象的最佳方式(会话除外)?

2024-06-23

我有一个 Rails 控制器

class Controllername < application
  def method1
    obj = API_CALL
    session =obj.access_token 
     redirect_to redirect_url    #calls the API authorization end point 
                            #and redirects to action method2  
  end
  def method2    
    obj.call_after_sometime
  end
end

我在 method1 中调用一些 API 来获取对象并在会话中存储访问令牌和机密。method1完成它的动作。

一段时间后我打电话method2,现在会话(访问令牌,秘密)已正确存储。

但是,现在里面method2我需要调用APIcall_after_sometime使用对象obj。但现在obj不可用,因为我没有将其存储在会话中(存储加密对象时我们会收到 SSL 错误)。

我想知道最好的存储方式是什么obj in method1以便以后可以使用它method2

EDIT:

当我尝试 Rails.cache 或 Session 时,我收到错误

 TypeError - no _dump_data is defined for class OpenSSL::X509::Certificate

谷歌搜索我发现当我在会话中存储加密值时它会抛出此错误。


您可以尝试缓存它,但要小心缓存键,如果每个用户的对象是唯一的,则将用户 ID 添加到缓存键中

class Controllername < application
  def method1
    obj = API_CALL
    Rails.cache.write("some_api_namespace/#{current_user.id}", obj)
    session =obj.access_token 
  end
  def method2
    obj = Rails.cache.read("some_api_namespace/#{current_user.id}")
    obj.call_after_sometime
  end
end

如果当您尝试读取缓存时,缓存可能不存在,那么您可以使用fetch代替read如果没有找到数据,它将调用 api

def method2
  obj = Rails.cache.fetch("some_api_namespace/#{current_user.id}") do
    method_1
  end
  obj.call_after_sometime
end

更多信息在这里 http://guides.rubyonrails.org/caching_with_rails.html#low-level-caching我也在这里写过 http://blog.abushady.com/2015/04/02/using_rails_low_level_caching.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Rails 控制器中存储对象的最佳方式(会话除外)? 的相关文章

  • 对于 ActiveReord 中的 has_many 关联,counter_cache 不会递减

    我的 Rails 3 应用程序有 2 个模型 第三个模型是它们之间的联接表及其 has many 关系 基本上 User 和 Show 通过 SavedShow 连接起来 允许用户保存节目列表 class Show lt ActiveRec
  • Rails 4:Solr 抛出 JavaMissing 错误,但已安装 Java

    我重新启动了 Rails 4 VPS Solr 显然也关闭了 我现在正在尝试启动 Solr 但是当我运行以下命令时RAILS ENV production bundle exec rake sunspot solr start我收到以下错误
  • Rails 4 生产环境中资产出现 404 not found 错误

    我是java环境中的rails新手 我对轨道 3 到轨道 4 的资产管道几乎没有什么困惑 目前我使用的是 Rails 4 2 5 我在本地环境中创建了一个示例应用程序 我从 app assets javascripts 内部创建了一个新的
  • puma 初始化程序不适用于 Rails 4.2

    我之前安装过很多次puma 从来没有出现过这个问题 我逐字遵循heroku 的指示 我创建了一个Procfile里面有这个 web bundle exec puma C config puma rb 这是配置文件 puma rb worke
  • HAML:form_tag 困境(缩进?)

    我正在制作 用户设置表单 并坚持使用 HAML form tag 1 2 3 each do i check box tag accept i submit tag 这会导致 语法错误 意外的 kENSURE 期望 end 工作变体是 fo
  • Hashie::Mash 从字符串恢复

    我在这个问题上很挣扎 我已经存储了一个Hashie Mash到一个字符串中 我很难将其恢复为哈希值 这是字符串 map Hashie Mash ncreated at Mon Jul 30 15 42 20 0000 2012 nid 22
  • Rails - 查找多个数组之间的交集

    我正在尝试查找多个数组之间的交集值 例如 code1 1 2 3 code2 2 3 4 code3 0 2 6 所以结果是 2 我知道在 PHP 中你可以使用 array intersect 来做到这一点 我希望能够轻松添加额外的数组 所
  • 剥掉所有的身体标签而不毁掉他们的孩子

    此 Ruby 代码使用Nokogiri http nokogiri org doc xpath tbody remove 删除 的子项 tbody 以及 tbody 他们自己 我只想删除所有 tbody 文档中的标签 将其子项留在原处 我怎
  • EventMachine 的优势是什么

    这是我的测试用例 我发现EM并不比一般的TCP服务器快 EM 服务器 require rubygems require benchmark require eventmachine class Handler lt EventMachine
  • 如何在 swagger 中传递多值查询参数

    我在 swagger yml 中有以下服务 该服务被编写为可以多次传递page id 例如 pages page id 123 page id 542 我检查了这个链接https swagger io specation https swa
  • 如何在 Ruby on Rails 的 Ubuntu 服务器上以生产模式重新启动 Phusion Passenger + Apache?

    我有 Apache phusion 乘客 我已经把 RailsEnv production 在 etc apache2 sites available default 文件中并已重新启动 apache 但当我运行时 rails c gt R
  • 非特权、非 root 用户无需 root 或 sudo 即可启动或重新启动 Webserver 服务器(例如 nginx)

    我正在使用 capistrano 部署 Rails Web 应用程序 我想为网络服务器上的部署用户提供尽可能少的权限 作为非特权用户 除了重新启动网络服务器之外 我能够做我需要做的一切 我在 ubuntu 服务器上执行此操作 但这个问题并非
  • 使用 nginx 运行水豚

    是否可以使用 nginx 和乘客来运行水豚 而是 webrick Capybara 与 Cucumber 一起安装在 Rails 应用程序中 这很简单 你唯一要做的就是改变你的想法 水豚和黄瓜都不受本地环境的束缚 你可以测试位于互联网上的应
  • 如何在控制器方法之间传递值

    有没有办法在控制器方法之间共享数组并将其存储到页面重新加载或调用另一个控制器的方法 有些方法应该改变数组 你可以使用rails缓存 Rails cache write list 1 2 3 Rails cache read list
  • 如何使用 Unicorn 进行滚动重启?

    假设我对 Rails 应用程序做了一些更改 例如更改 html 布局 我如何使用 Unicorn 进行滚动重启 实际上 人们希望为最新版本的 Rails 应用程序启动独角兽进程 或工作人员 然后自动将流量从旧的独角兽进程 工作人员切换到新的
  • Rails 资产管道不包括 application.js 清单中所需的文件

    Rails 资产管道不包含 application js 中所需的文件 呈现给浏览器的唯一 javascript 文件是 application js 并且 require 行未编译为包含应有的标签 This is a manifest f
  • Rails:构建涉及多态关联和 STI 的查询

    我正在尝试查找有关照片的 10 条最新评论 以便将它们集成到我的 Rails 3 0 3 应用程序上的活动提要中 我有一个Photo模型 它继承自Upload使用单表继承的模型 class Upload lt ActiveRecord Ba
  • 使用核心 Node.js 进行会话管理,无需 Express.js

    如何在核心 Node js 非express js 项目中处理 创建用于服务器端会话管理的中间件 我可以找到基于 Express 的项目的模块 但不能找到核心 Node js 的模块 请向我推荐任何用于非express js 项目的模块或中
  • ubuntu上rails mysql gem问题

    Ruby on Rails 我想调用本地主机上的控制器 但服务器说 缺少 mysql gem 将其添加到您的 Gemfile 中 gem mysql 2 8 1 问题 当我点击 gem list 命令时 我得到了一个包含 mysql 2 8
  • 在 Ruby 中显示 HTTP 请求的标头和正文

    我确信这很容易 但我进行了相当广泛的搜索 但无法找到答案 我正在使用Net HttpRuby 中的库 我想弄清楚如何显示 HTTP GET 请求的完整正文 像下面这样 GET really long path index html q fo

随机推荐