【问题标题】:undefined method `last' for #<Hash:0x00007f303593d6d8>#<Hash:0x00007f303593d6d8> 的未定义方法“last”
【发布时间】:2020-12-30 16:07:20
【问题描述】:

在 Workato 的自定义 sdk 中尝试以下代码

poll: lambda do |connection, input, last_updated_at|
      per_page = 1
      last_updated_at = (last_updated_at || input['since']).to_time.utc.iso8601
      candidates = get("https://api.stripe.com/v1/customers")
      last_updated_at = candidates.last["created"] unless candidates.blank?

出现错误 #Hash:0x00007f303593d6d8 的未定义方法“last”在行:

【问题讨论】:

  • 根据Stripe Documentation,你需要candidates['data'].last["created"]。话虽如此,这将为您提供给定数据列表中的最后一个客户,但不一定是“最后一个客户”。默认限制为 10,因此在这种情况下您将获得第 10 个客户

标签: ruby-on-rails ruby workato


【解决方案1】:

There is no Hash#last method。散列确实保持它们的插入顺序,但你应该在概念上将它们视为无序的。 Hash 的“最后一个”元素的概念根本没有意义。

【讨论】:

  • 在这种情况下,我假设get api返回客户列表(stripe.com/docs/api/customers/list)......如果是这样,如何获取列表中的最后一个客户..
  • 你发布的链接说你得到的是字典,而不是列表,所以你认为是错误的。
  • @user6816447 "list" 包含在字典的 ["data"] 属性中。
猜你喜欢
  • 2010-11-10
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多