Skip to content

Commit 051f96c

Browse files
committed
Prevent School#rejected_at being changed once set
1 parent 6238e08 commit 051f96c

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

app/models/school.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class School < ApplicationRecord
2020
validates :rejected_at, absence: { if: proc { |school| school.verified? } }
2121
validates :verified_at, absence: { if: proc { |school| school.rejected? } }
2222
validate :verified_at_cannot_be_changed
23+
validate :rejected_at_cannot_be_changed
2324

2425
before_validation :normalize_reference
2526

@@ -52,4 +53,8 @@ def normalize_reference
5253
def verified_at_cannot_be_changed
5354
errors.add(:verified_at, 'cannot be changed after verification') if verified_at_was.present? && verified_at_changed?
5455
end
56+
57+
def rejected_at_cannot_be_changed
58+
errors.add(:rejected_at, 'cannot be changed after rejection') if rejected_at_was.present? && rejected_at_changed?
59+
end
5560
end

spec/models/school_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,12 @@
195195
school.update(verified_at: nil)
196196
expect(school.errors[:verified_at]).to include('cannot be changed after verification')
197197
end
198+
199+
it "cannot change #rejected_at once it's been set" do
200+
school.update!(rejected_at: Time.zone.now)
201+
school.update(rejected_at: nil)
202+
expect(school.errors[:rejected_at]).to include('cannot be changed after rejection')
203+
end
198204
end
199205

200206
describe '#creator' do

0 commit comments

Comments
 (0)