15分単位のみを許可するバリデーションを追加
15分単位の入力のみを許可するバリデーションの設定ができたのでメモ
やったこと
全てモデル内で設定を完結させた。
class Reservation < ApplicationRecord SET_VALUES = [0, 15, 30, 45] validates :ended_at_greater_than_started_at, presence: true validates :get_minute, presence: true, inclusion: {in: [SET_VALUES]} def ended_at_greater_than_started_at self.started_at < self.ended_at end def get_minute self.started_at.min end
ハイライト
ended_at_greater_than_started_at
で開始時間が終了時間よりも前であることを設定get_minute
でstarted_at
のminを取得get_minute
で取得したminをinclusion: {in: [SET_VALUES]}
で指定した値であるかを判定
これで、15分単位のみを許可する設定が完了