You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Ruby on Rails中使用Concurrency Gem获取历史汇率是否可行?

Ruby on Rails 中使用 Concurrency Gem 获取历史汇率的解决方案

可行性结论

完全可行。Concurrency Gem 官方文档仅封装了实时汇率查询方法,但其底层调用的汇率接口原生支持历史数据查询,仅需自行扩展调用逻辑即可。

现有实时调用逻辑

当前官方提供的实时汇率调用方式为:
Concurrency.conversion_rate("NZD", "INR")
该方法内部仅构造了实时查询的接口参数,未传递历史查询所需的日期字段。

两种实现方案

方案1:直接调用底层接口

跳过Gem的封装,自行构造请求调用底层汇率接口,仅需额外传入格式为YYYY-MM-DD的查询日期参数即可,无需修改Gem源码,适合临时需求场景。
注意免费版接口通常有单日请求次数、历史查询时间范围的限制,调用前可先确认权限范围。

方案2:扩展Gem方法(低侵入性)

在Rails项目的config/initializers目录下新建补丁文件concurrency_historical_extension.rb,参考Gem原有conversion_rate方法的实现逻辑,新增支持日期参数的历史查询方法,示例代码如下:

module ConcurrencyExtension
  def self.included(base)
    base.extend ClassMethods
  end

  module ClassMethods
    def historical_conversion_rate(from, to, query_date)
      # 复用Gem原有请求校验、签名逻辑,仅新增date参数到接口请求参数中
      # 原有实现可查看Gem源码中conversion_rate方法的内部逻辑,对应添加参数即可
    end
  end
end

Concurrency.include ConcurrencyExtension

扩展完成后即可在业务中直接调用:
Concurrency.historical_conversion_rate("NZD", "INR", "2024-03-15")

注意事项

  • 历史日期不可早于接口支持的最早查询时间,否则会返回无效数据
  • 日期参数必须严格遵守YYYY-MM-DD格式要求

内容的提问来源于stack exchange,提问作者doer123456789

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:27:06