0

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. 私はそれをすべてする必要はありませんでしたか?(私が考えていないnext_を取得する方法はありますか?
  2. 私がしたことが必要な場合、平日の配列を取得するためのより良い方法はありますか?

ありがとう!

4

1 に答える 1

1

このDateクラスは、配列を置き換えるために使用できるDAYNAMES定数(およびその他の有用な定数)を定義します。

于 2012-04-30T18:47:08.270 に答える