Monkey_ patch下一个<weekday>方法的日期类</weekday>

时间:2012-04-30 18:40:31

标签: ruby ruby-on-rails-3 monkeypatching

在我的Rails应用程序中,我需要从其他日期开始获取特定工作日下一次出现的日期。所以基本上我需要date.next_mondaydate.next_wednesday类型函数。我不认为这些存在于标准的Ruby库中,所以我决定像这样修补Date类:

class Date
  weekdays = [:sunday, :monday, :tuesday, :wednesday, :thursday, :friday, :saturday]
  weekdays.each do |weekday|
    method_name = "next_" + weekday.to_s
    send :define_method, method_name do
      tmp_date = self + 1
      until tmp_date.send((weekday.to_s + "?").to_sym)
        tmp_date = tmp_date + 1
      end
      tmp_date
    end
  end
end

这似乎工作正常。 我的问题是:

  1. 我不需要做那么多吗? (有没有办法让我接下来的那个我没想到的?
  2. 如果我所做的是必要的,有没有更好的方法来获得平日阵列?
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

Date类定义了可用于替换数组的DAYNAMES常量(as well as a number of other useful constants)。