3

次のように、テーブルから特定の曜日を取得する条件を使用しているRailsnamed_scopeがあります。

:conditions => [ 'EXTRACT(DOW FROM bookdate) IN (?)', (1..6).to_a ]

1..6の日付範囲は、ユーザーが希望する日付に応じて可変になります。

このSQLを生成する

(EXTRACT(DOW FROM bookdate) IN (1,2,3,4,5,6)

私の問題は、曜日が単純な範囲ではないことです...つまり、1..6は正常に機能しますが(月...土)、6..2は正しく機能しません(土-火)...ルビーの範囲として、または6,5,4,3,2ではなく6,7,1,2である必要があるため(6..2がルビーで機能すると仮定しますが、機能しません)。

このような日付範囲に対応する曜日のカスタム範囲を作成するにはどうすればよいですか?

何か案は?

ありがとう、

4

1 に答える 1

7

に含めるための値の範囲を生成する関数が必要な場合は、:conditions土-火や月-土などの範囲で機能します。

def day_range(from, to)
  if from <= to
    (from..to).to_a
  else
    (from..7).to_a + (1..to).to_a
  end
end

例えば

irb(main):032:0> day_range(1, 6)
=> [1, 2, 3, 4, 5, 6]
irb(main):033:0> day_range(6, 2)
=> [6, 7, 1, 2]

次に、必要に応じて曜日名を日付番号にマッピングするだけです。

于 2010-02-07T10:38:26.863 に答える