2016-05-13 12 views
0

start_dateend_dateの属性を持つEventモデルがあります。私はキーとして日付を持つハッシュを作成しようとしており、その値は配列になります。配列は、その日付に発生するイベントで構成されます。イベントは、その日付が上またはそのイベントの開始日と終了日の間にある場合、その日にoccuringされると言われています。私は理にかなっていると願っています。私は私にstart_dateでグループ化されたイベントとハッシュを取得するコードを持っています。それは私にキーとしての日付と配列としての値を持つハッシュを与えます。この配列には、開始日がキーと同じイベントがあります。これは完全な解決策ですが。誰か助けてくれますか?それは有り難いです。私は不完全な解決策としてい終了日の開始日の値を持つレコードのハッシュ

コード:ここで

Event.all.group_by(&:start_date) 
{Thu, 12 May 2016 05:59:34 UTC +00:00=>[#<Event id: 1, title: "Vacation", starts_at: "2016-05-12 05:59:34", ends_at: "2016-05-22 05:59:36", available: false, event_type: "vacation", practitioner_id: 1, maximum_prayers: 10, created_at: "2016-05-12 06:00:41", updated_at: "2016-05-12 06:00:41">], Fri, 13 May 2016 13:26:59 UTC +00:00=>[#<Event id: 2, title: "Meditation break", starts_at: "2016-05-13 13:26:59", ends_at: "2016-05-23 13:27:03", available: false, event_type: "vacation", practitioner_id: 1, maximum_prayers: 10, created_at: "2016-05-13 13:27:24", updated_at: "2016-05-13 13:27:24">]} 
+0

あなたは、そのハッシュに複数のイベント(数日間に及ぶイベント)が必要なことを意味しますか? – Vasfed

+0

はい。それは私が欲しいものです – Saurabh

答えて

3

は、あなたが望むかもしれ例です。各イベントをループします。各イベントについて、範囲内の各日付をループし、その日付の配列に追加します。

Event.all.each_with_object(Hash.new { |h, k| h[k] = [] }) do |event, hash| 
    (event.start_date.to_date..event.end_date.to_date).each do |dt| 
    hash[dt].push event 
    end 
end 
関連する問題