mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-12-11 22:24:21 +01:00
28 lines
681 B
Ruby
28 lines
681 B
Ruby
class ReservationContext < ApplicationRecord
|
|
has_many :reservations
|
|
has_many :cart_item_reservations, dependent: :nullify, class_name: "CartItem::Reservation"
|
|
|
|
APPLICABLE_ON = %w[machine space training]
|
|
|
|
scope :applicable_on, ->(applicable_on) { where("applicable_on @> ?", "{#{applicable_on.presence_in(APPLICABLE_ON)}}")}
|
|
|
|
validates :name, presence: true
|
|
validate :validate_applicable_on
|
|
|
|
def safe_destroy
|
|
if reservations.count.zero?
|
|
destroy
|
|
else
|
|
false
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def validate_applicable_on
|
|
return if applicable_on.all? { |applicable_on| applicable_on.in? APPLICABLE_ON }
|
|
|
|
errors.add(:applicable_on, :invalid)
|
|
end
|
|
end
|