如何使用proc来格式化groupdate键?

时间:2015-06-28 09:50:34

标签: ruby-on-rails

我试图了解格式选项在groupdate gem中的工作原理。

自述文件解释了format采用传递给strftime或proc(here)的字符串。

我无法理解proc部分内容。

一个简单的例子,如果User.group_by_month(:created_at).count.keys返回[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12](即一年中的几个月),我将如何对这些键进行简单的转换,比如key * 2

查看source,格式似乎需要一个方法

if options[:format].respond_to?(:call)
  options[:format]
end

所以我希望能够做一些像User.group_by_month(:created_at, format: 'Proc.new { |d| d * 2 }')....

这样的事情

但是这只返回Proc.new { |d| d * 2}字符串。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

大多数*_by方法都希望Proc s(或lambda s或block)作为参数。看起来你不小心将Proc文字包装在引号中,使其成为一个字符串。尝试删除引号,将其重新设置为Proc,如下所示:

User.group_by_month(:created_at, format: Proc.new { |d| d * 2 })