我试图了解格式选项在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}
字符串。
我做错了什么?
答案 0 :(得分:1)
大多数*_by
方法都希望Proc
s(或lambda
s或block)作为参数。看起来你不小心将Proc
文字包装在引号中,使其成为一个字符串。尝试删除引号,将其重新设置为Proc
,如下所示:
User.group_by_month(:created_at, format: Proc.new { |d| d * 2 })