私はイベントカレンダーを開発しています。このカレンダーでは、1時間ごとに、ユーザーが1つの予定に署名できるスロットがあります。
ユーザーがスロットを更新できる(また日付/時刻を変更できる)機能があるので、値を更新する前に、スロットが空いていることを確認するためにいくつかのチェックを実行したいと思います。だから私はこのような方法で終わった:
if Event.find(:all, :conditions => ["start_at = ? AND event_calendar_id = ?", self.start_at, self.id])
errors.add :base, "You cannot save this appointment in that slot."
return false
end
ちなみに、日時フィールドを変更せずに他のフィールドを更新すると、それ自体が検出されて例外が発生し、更新できなくなるため、問題が発生します。
現在のIDなどのデータベースデータにアクセスして値から自分自身を除外したり、送信された日時フィールドがデータベースのフィールドと等しいかどうかを確認したりする方法はありますか(このチェックをスキップできます)。
これを行うための最良の方法は何ですか?ありがとう。
PS私はレール3.2.3を使用しています