重构代码模型?

时间:2014-07-31 14:58:55

标签: ruby-on-rails ruby validation

class Reservation < ActiveRecord::Base

  validates :table, presence: true
  validates :start, presence: true
  validates :finish, presence: true   
  validate :checking_the_time, :uniqueness_reservation

  scope :tables, ->(table) { where("'reservations'.'table' = ? ", table) }


  def checking_the_time
    if start >= finish
      errors.add(:finish, "Invalid time range")
    end
  end

  def uniqueness_reservation
    unless Reservation.diapazone(start, finish).tables(table).where.not(id: id).empty?
      errors.add(:booked_from, 'Invalid period.')
    end
  end


  private

  def self.diapazone(start, finish)
    where("(start >= :s AND finish <= :f) OR (start <= :s AND finish >= :s)
             OR (start <= :f AND finish >= :f)",
          {s: start, f: finish})
  end    

end

如何按照已创建的顺序重构输入订单的验证检查? 如果你能举一个例子,我将非常感谢你的建议。

0 个答案:

没有答案