diff --git a/app/models/vacancy.rb b/app/models/vacancy.rb index dad0894fb1..6dcf7edf67 100644 --- a/app/models/vacancy.rb +++ b/app/models/vacancy.rb @@ -66,7 +66,12 @@ class Vacancy < ApplicationRecord has_many :job_applications, dependent: :destroy has_one :equal_opportunities_report, dependent: :destroy has_many :organisation_vacancies, dependent: :destroy - has_many :organisations, through: :organisation_vacancies, dependent: :destroy, after_add: :refresh_geolocation, after_remove: :refresh_geolocation + has_many :organisations, + through: :organisation_vacancies, + dependent: :destroy, + validate: false, # If an organisation has some validation error, we do not want to block users from creating a vacancy. + after_add: :refresh_geolocation, + after_remove: :refresh_geolocation has_many :markers, dependent: :destroy has_many :feedbacks, dependent: :destroy, inverse_of: :vacancy diff --git a/spec/models/vacancy_spec.rb b/spec/models/vacancy_spec.rb index 398828b808..a6461da1dc 100644 --- a/spec/models/vacancy_spec.rb +++ b/spec/models/vacancy_spec.rb @@ -489,6 +489,16 @@ it { is_expected.to be_valid } end end + + describe "organisation association" do + it "is valid when an associated organisation has validation errors" do + publisher = build_stubbed(:publisher) + invalid_school = build_stubbed(:school, email: "invalid") + expect(invalid_school).not_to be_valid + + expect(Vacancy.new(organisations: [invalid_school], publisher: publisher)).to be_valid + end + end end describe "#geolocation" do