Skip to content

Commit da062e6

Browse files
committed
Scope school_roll_number uniqueness to non-rejected schools and allow reapplication with the same roll number after a school is rejected
1 parent 6a375d2 commit da062e6

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

app/models/school.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class School < ApplicationRecord
1919
validates :reference, uniqueness: { case_sensitive: false, allow_nil: true }, presence: false
2020
validates :district_nces_id, uniqueness: { case_sensitive: false, allow_nil: true }, presence: false
2121
validates :school_roll_number,
22-
uniqueness: { case_sensitive: false, allow_nil: true },
22+
uniqueness: { conditions: -> { where(rejected_at: nil) }, case_sensitive: false, allow_nil: true },
2323
presence: false,
2424
format: { with: /\A[0-9]+[A-Z]+\z/, allow_nil: true, message: I18n.t('validations.school.school_roll_number') }
2525
validates :creator_id, presence: true, uniqueness: true

spec/models/school_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,15 @@
202202
expect(school.school_roll_number).to eq('01572D')
203203
end
204204

205+
it 'allows school_roll_number reuse when original school is rejected' do
206+
school.school_roll_number = '01572D'
207+
school.save!
208+
school.reject
209+
210+
new_school = build(:school, school_roll_number: '01572D')
211+
expect(new_school).to be_valid
212+
end
213+
205214
it 'requires an address_line_1' do
206215
school.address_line_1 = ' '
207216
expect(school).not_to be_valid

0 commit comments

Comments
 (0)