у меня есть некоторые проблемы, чтобы использовать after_destroy в моделиRails Модель - after_destroy никогда не называли
Вот это одна:
class Transaction < ActiveRecord::Base
belongs_to :user
delegate :first_name, :last_name, :email, to: :user, prefix: true
belongs_to :project
delegate :name, :thanking_msg, to: :project, prefix: true
validates_presence_of :project_id
after_save :update_collected_amount_in_project
after_update :update_collected_amount_if_disclaimer
after_destroy :update_collected_amount_after_destroy
def currency_symbol
currency = Rails.application.config.supported_currencies.fetch(self.currency)
currency[:symbol]
end
private
def update_collected_amount
new_collected_amount = project.transactions.where(success: true, transaction_type: 'invest').sum(:amount)
project.update_attributes(collected_amount: (new_collected_amount/100).to_f) # Stored in € not cents inside projects table
end
def update_collected_amount_in_project
update_collected_amount if transaction_type == 'invest' && success == true
end
def update_collected_amount_if_disclaimer
update_collected_amount if transaction_type == 'invest' && self.changes.keys.include?('success') && self.changes.fetch('success', []).fetch(1) == false
end
def update_collected_amount_after_destroy
update_collected_amount
end
end
Когда я использую что-то вроде:
Transaction.last.delete
Он никогда не идут внутри моего after_destroy я попытался включить некоторые выходы, но ничего. Я не знаю, если я ошибаюсь в том, как я использую этот after_destroy
, я также пробовал before_destroy
, и у меня такая же проблема. after_save
и after_update
работа совершенно.
Включить отладчик как Поддеть или ByeBug и установить точки останова, а не пытаться отлаживать с помощью вещей, как 'puts' или' Rails.logger'. – meagar