1

こんにちは、Ruby on Rails (v. 3.2.13) で小さなレストラン Web サイトを作成しようとしています。

ここで私の現在の設定を見ることができます: How to use params in another action?

現在、テーブルを予約することは可能ですが、検証はありません。次のように、form_tag の開始時刻、終了時刻、および日付を検証する必要があると思います。

  • 開始時間は未来でなければなりません
  • 開始時間と終了時間の間の同じ日に新しい予約を行うことはできません
  • 終了時間は開始時間+2時間固定
  • 日付は将来または同じ日にする必要があります

OK 終了時刻は検証されません。すべての予約は 2 時間続くので、Start-time+2 時間の値を割り当てるだけです。

time_selectandで試してみましたdate_selectが、フォーマットが非常に奇妙に見え (5i、4i、...)、これでは何もできませんでした。

検証にgemを使用する必要がありますか? 合計時間(開始時間+2時間)は可能ですか?時刻/日付に別の形式を使用できますか? 検証するための追加の側面を忘れましたか?

継続する方法がわかりません。ありがとう

4

3 に答える 3

1

チェックアウトvalidates_timeliness gemモデルをクリーンで直感的に保ち、さまざまな日付/時刻比較のための柔軟なエラー メッセージで I18n ローカリゼーションをサポートします。

validates_datetime :starts_at, :after => :now
validates_datetime :ends_at, :on_or_after => :two_days_later, :if => :starts_at

def two_days_later
  self.starts_at + 2.hours
end
于 2013-09-20T02:20:40.480 に答える
0

この解析関数を使用して、日付を選択したフォームによって提供されるデフォルトの形式を変更すると、ルビで日付オブジェクトが返されます。その後、必要なすべての検証を非常に簡単に適用できます。

 Date.parse(yourDate.to_s)

将来的に確認するために、直接方法があるので、date_object.future?それで確認できます。your_time + 2.hoursええ、時間に2時間を追加するために実行できるレールで時間を合計することは可能です。

于 2013-08-16T08:50:33.690 に答える