class Poll class BoothAssignment < ApplicationRecord belongs_to :booth belongs_to :poll delegate :name, to: :booth before_destroy :destroy_poll_shifts has_many :officer_assignments, dependent: :destroy has_many :officers, through: :officer_assignments has_many :voters has_many :partial_results has_many :recounts def shifts? !shifts.empty? end def unable_to_destroy? (partial_results.count + recounts.count).positive? end private def shifts Poll::Shift.where(booth_id: booth_id, officer_id: officer_assignments.pluck(:officer_id), date: officer_assignments.pluck(:date)) end def destroy_poll_shifts shifts.destroy_all end end end