0

私は、開始時間、終了時間、および場所 (単純な文字列) を使用して、ユーザーが日曜日から土曜日までの空き状況を設定できるようにする Rails アプリの作成に取り組んでいます。User オブジェクトがありますが、続行する方法がわかりません。次のような Time オブジェクトの大規模なセットを使用できることはわかっています。

class User
    field :mondayStartTime, :type => Time
    field :mondayEndTime, :type => Time
    field :mondayLocation, :type => String
    field :tuesdayStartTime, :type => Time
    field :tuesdayEndTime, :type => Time
    field :tuesdayLocation, :type => String
    ...
    field :sundayEndTime, :type => Time
    field :sundayLocation, :type => String
end

ただし、これは非常に効率が悪いように思えますが、別の一意のオブジェクト クラスを作成することは同様に悪いように思われ、結果としてコード行が増えるだけです。日曜日から土曜日までのスケジュールの開始/終了時間を実装する簡単な方法はありますか?

ありがとう!

4

2 に答える 2

1

start、end、locationプロパティを持つ、曜日ごとのオブジェクトを作成することを考えましたか?

または、開始時刻、終了時刻、および場所のフィールドを持つJobsオブジェクト(モデル)。

このようにして、has_many:jobsを実行してから、日ごとに絞り込むか、特定の日ごとに選択することができます。絞り込みは、ruby Time ClassまたはActiveSupportクラス(3.days.from_nowなど)で実行可能である必要があります。

irb(main):001:0> require 'active_support/all'
=> true
irb(main):002:0> 2.days.ago
=> 2012-04-03 08:30:31 -0700
irb(main):003:0> 2.days.from_now
=> 2012-04-07 08:33:01 -0700

アクティブなサポート時間クラスを表示するように編集

于 2012-04-05T03:50:36.047 に答える
1

一見すると、start_at、end_at、location、および day_of_week の属性を持つ「Availability」モデル/クラス (または「Schedule」のようなスペルミスの少ないもの) を作成し、そのクラスをユーザーに属させます (そして、ユーザーが「has_many :availabilities」または「has_many :schedules」を持っている場合)。これは (一見すると) データを取り戻すのに最も効率的で簡単なように思えます。また、その別のクラスを使用して、スケジュールや空き状況をより簡単にグループ化するなどのことを行うことができます。

于 2012-04-05T03:58:36.213 に答える