Ruby元编程日期“.at_beginning_of_X”

时间:2015-09-17 23:31:08

标签: ruby metaprogramming

我有一种方法可以输出一种时间范围,可以是以下任何一种:
["day", "week", "month"]

我如何定义一个输出类似的方法:
type = "day"
Date.today.at_beginning_of_type

type可以是我上面提到的三种类型中的任何一种吗?

编辑虽然这是一个很小的方法,但到目前为止,这是我采用的方法:

def output_a_date
 type = get_period_type
 puts 'The date at the beginning of the "#{type}" ago was "#{Date.today.at_beginning_of_type}"'
end

def get_period_type
  type = "day"
end

1 个答案:

答案 0 :(得分:3)

您想使用send方法。

您可以阅读更多相关信息here

您的代码可能如下所示:

def beginning_of(type)
  Date.today.send(:"at_beginning_of_#{type}")
end