Performance: Only update specific calendars on destroy and not loop over all.
This commit is contained in:
parent
a7bc54db37
commit
58807875e9
2 changed files with 17 additions and 8 deletions
|
@ -373,18 +373,14 @@ returns
|
|||
end
|
||||
|
||||
# check if sla's are refer to an existing calendar
|
||||
default_calendar = Calendar.find_by(default: true)
|
||||
Sla.find_each do |sla|
|
||||
if !sla.calendar_id
|
||||
sla.calendar_id = default_calendar.id
|
||||
sla.save!
|
||||
next
|
||||
end
|
||||
if !Calendar.exists?(id: sla.calendar_id)
|
||||
if destroyed?
|
||||
default_calendar = Calendar.find_by(default: true)
|
||||
Sla.where(calendar_id: id).find_each do |sla|
|
||||
sla.calendar_id = default_calendar.id
|
||||
sla.save!
|
||||
end
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
|
|
|
@ -43,6 +43,19 @@ RSpec.describe Calendar, type: :model do
|
|||
expect { described_class.first.destroy }
|
||||
.to change { calendar.reload.default }.to(true)
|
||||
end
|
||||
|
||||
context 'when sla has destroyed calendar set' do
|
||||
let(:sla) { create(:sla, calendar: described_class.first) }
|
||||
|
||||
before do
|
||||
sla
|
||||
end
|
||||
|
||||
it 'sets the new default calendar to the sla' do
|
||||
expect { described_class.first.destroy }
|
||||
.to change { sla.reload.calendar }.to(calendar)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue