Я строю приложение с календарем Rails.Он имеет события, которые могут иметь одно или несколько повторяющихся событий.Например, «Запуск каждый понедельник, 100 раз».
Если пользователь удаляет все повторяющиеся события, я хочу, чтобы основное событие также было удалено.
1 class RecurringEvent < ApplicationRecord
27 belongs_to :event
35 after_destroy :delete_main_event_if_last_current
118 def delete_main_event_if_last_current
119 puts "#{event.recurring_events.size} left"
120 event.destroy if event.recurring_events.empty?
121 end
Мойtest
87 it "Delete the main event when the last recurring is deleted", focus: true do
88 event_id = @event.id
89 @event.recurring_events.each { |re| re.destroy! }
90 expect(Event.where(id: event_id).count).to eq 0
91 end
Это дает этот вывод, но главное событие не удаляется.
RecurringEvent
Recurring events
5 left
5 left
5 left
5 left
5 left
Есть идеи, почему повторяющиеся события не будут удалены?
С byebug
:
[117, 126] in /app/app/models/recurring_event.rb
117:
118: def delete_main_event_if_last_current
119: puts "#{event.recurring_events.size} left"
120: event.destroy if event.recurring_events.empty?
121: byebug
=> 122: end
123:
(byebug) event.recurring_events.size
5
(byebug) event.recurring_events.first.destroy
nil
(byebug) event.recurring_events.size
5