Есть ли способ проверить в хуке before_destroy
, какой объект (class)называется destroy
?
В следующем примере, когда patient
уничтожается, уничтожается и их appointments
(, чего я и хочу); однако я не хочу, чтобы physician
был уничтожен, если с этим physician
связаны какие-либо appointments
.
Опять же, есть ли способ сделать такую проверку в обратном вызове before_destory
? Если нет, есть ли другой способ выполнить эту «проверку уничтожения» на основе «направления» вызова (, т.е. на основании того, кто звонил )?
class Physician < ActiveRecord::Base
has_many :appointments, dependent: :destroy
has_many :patients, through: :appointments
end
class Patient < ActiveRecord::Base
has_many :appointments, dependent: :destroy
has_many :physicians, through: :appointments
end
class Appointment < ActiveRecord::Base
belongs_to :patient
belongs_to :physician
before_destroy :ensure_not_referenced_by_anything_important
private
def ensure_not_referenced_by_anything_important
unless patients.empty?
errors.add(:base, 'This physician cannot be deleted because appointments exist.')
false
end
end
end