Engneering Poem

主に技術関連の学びや雑談についてのブログです。

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_minutestarted_atのminを取得

  • get_minuteで取得したminを inclusion: {in: [SET_VALUES]} で指定した値であるかを判定


これで、15分単位のみを許可する設定が完了

参考資料

docs.ruby-lang.org

qiita.com

kossy-web-engineer.hatenablog.com