Ruby 元编程日期 ".at_beginning_of_X"

Ruby metaprograming date ".at_beginning_of_X"

我有一个方法可以输出一种时间范围,它可以是以下任何一种:
["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

您想使用 send 方法。

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

您的代码可能如下所示:

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