forked from chicago-tool-library/circulate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathborrow_policy.rb
47 lines (37 loc) · 1.16 KB
/
borrow_policy.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class BorrowPolicy < ApplicationRecord
monetize :fine_cents, numericality: {
greater_than_or_equal_to: 0, less_than_or_equal_to: 10
}
validates :name,
presence: true, uniqueness: {case_sensitive: false}
validates_numericality_of :duration,
only_integer: true, greater_than_or_equal_to: 1, less_than: 365
validates_numericality_of :fine_period,
only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 100
validates_numericality_of :renewal_limit,
only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 52
scope :alpha_by_code, -> { order("code ASC") }
scope :not_uniquely_numbered, -> { where(uniquely_numbered: false) }
def self.default
where(default: true).first
end
def self.not_uniquely_numbered_ids
not_uniquely_numbered.pluck(:id)
end
def complete_name
"#{name} (#{code})"
end
def allow_multiple_holds_per_member?
!allow_one_holds_per_member?
end
def allow_one_holds_per_member?
uniquely_numbered
end
after_save :make_only_default
private
def make_only_default
if default
self.class.where("id != ?", id).update_all(default: false)
end
end
end