数组作为Rails.cache.fetch方法中的第一个参数

巴万

我正在阅读有关Rails缓存获取方法的信息。我阅读的所有示例都将字符串作为方法中的第一个参数传递。但是,当我从Rails项目中读取代码时,我看到了一个array passed as the first argument in cache fetch method.

  def self.get_new_sitemap(https_version = false)
    Rails.cache.fetch(['sitemap_city_block', https_version], expires_in: 5.days) do
      modified_key = 'key1'
      LocalCache.set(modified_key, Date.today)

      protocol = (https_version ? 'https' : 'http')
      url_list = get_sitemap_urls(https_version)
      content = Nokogiri::XML::Builder.new do |xml|
        xml.urlset('xmlns' => "http://www.sitemaps.org/schemas/sitemap/0.9",
          'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance",
          'xsi:schemaLocation' => "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd") {
          url_list.each { |url|
            xml.url {
              xml.loc url[:loc]
              xml.lastmod url[:lastmod] if url[:lastmod].present?
            }
          }
        }
      end.to_xml
    end
  end

我无法理解传递数组背后的逻辑。在某些情况下,将传递大小为3的数组。
任何帮助将不胜感激。

汤姆·洛德

查看rails源代码可以发现(private)方法Rails.cache.expanded_key

这种方法可以做一些事情。特别是,它调用:key.to_param这会将数组转换为字符串

因此,换句话说,允许您使用Rails.cache.fetch数组(或哈希!)进行调用,但是在后台,缓存键仍然是字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以将hash作为方法中的第一个参数吗?

仅更改列表中第一个元素的方法(将列表作为参数传递)

返回作为第二个参数传递的数组中第一个参数的索引的函数

我可以将self作为python中类方法的第一个参数传递吗

无法打开文件作为第一个参数

使xargs作为第一个参数传递

必须以MyModel实例作为第一个参数来调用未绑定方法save()

必须以实例作为第一个参数调用未绑定方法

mapstruct 1.3 无法获取 Enum 作为第一个方法参数

必须以实例作为第一个参数调用未绑定方法-python

未绑定的方法必须以实例作为第一个参数来调用

为什么Blob构造函数只将数组作为第一个参数?

为什么.fit()需要2D数组作为第一个参数?

函数组合导致方法第一个缺少参数列表

使用数组作为参数仅通过第一个元素(JSON RPC)调用PHP中的另一个函数

Rails获取错误:表单中的第一个参数不能包含nil或为空

Rails 4-表单中的第一个参数不能包含nil或为空

Ruby on Rails:表单中的第一个参数不能包含nil或为空

选择div的第一个图像作为数组

通过传递的MongoDB查询将数组中的第一个对象作为目标

行中的第一个非空白单元格作为列的数组

数组的第一个值作为键名,最后一个作为值JavaScript?

Rails.cache.fetch 不适用于 json 数组

如何键入一个将对象数组作为第一个参数,并将对象上期望的特定属性作为参数的打字稿函数?

具有两个数组的方法。如果第一个数组中的值返回不为null,则必须将另一个数组中的相应元素用作第二个方法的参数

Python3:可以使用“self”以外的方法作为方法的第一个参数吗?

为什么只有第一个 mysqli_fetch() 结果存储在数组中

如何使用@RequestParam在Spring MVC中请求数组类型参数时始终获取第一个参数

$ arrayElemAt的第一个参数必须是一个数组