обратные вызовы рельсов не выполняются

Я пытаюсь выяснить, почему мои обратные вызовы не выполняются.sometimes(вы слышали это правильноиногда так как большую часть времени работает из коробки)

Все, что у меня есть, это отношения родитель / ребенок между двумя моделями

при создании детской записи все, что яя делаю вafter_create обратный вызов - это обновление (накапливать всю дочернюю сумму в родительском поле, чтобы избежать тяжелых запросов во время выполнения) поле суммы в родительской таблице / записи модели

Родительская модель ()Payout

Дочерняя модель есть ()Sales Transaction

Payout имеет много SalesTransactions как сказано выше при создании сделки купли-продажи I 'm обновляет (увеличивая, чтобы быть точным)amount поле родительской записи (запись о выплате), чтобы избежать тяжелого запроса во время выполнения.

так выплатаamount field не что иное, как суммирование всей суммыsales_transactions из этих выплат

это так же хорошо, как сказать, как будет payout.amount (после выполнения обратного вызова)

payout.amount == payout.sales_transactions.pluck('amount').sum

и это то, что я пытаюсь достичь с помощью обратных вызовов

class SalesTransaction < ActiveRecord::Base
   belongs_to :payout
   after_create :update_payout_for_sale

   def update_payout_for_sale
    sales_amount = payout.amount || 0
    sales_amount =  sales_amount + amount.to_f
    ## Also make note of the minus from original amount i.e refund and custom_deduction_amount
    payout.update_attributes(:amount => sales_amount)
  end  

end

class Payout < ActiveRecord::Base
  has_many :sales_transactions
  has_one :referrer
  after_save :update_referrer_earning

  def update_referrer_earning
    referrer.update_attributes(:amount  => (amount*10)/100.to_d)) rescue nil
  end
end

Интересная часть здесь заключается в том, чтоsometime когда SalesTransactioncreated обратный вызов просто не вызывается, так как я не вижу значения обновления записи выплат

Я пытаюсь избежать обратного вызова на данный момент, но зная, радиwhy обратный вызов не выполняетсяled me задать этот вопрос

НОТА

Нет проверки ни в SalesTransaction, ни в таблице выплат (я проверял это 1000 раз) =>Payout.validators [] =>

SalesTransaction.validators []

Там нет проблемы массового назначения, как я не могу определитьattr_accessible или жеattr_protected (Я проверяю это, а также, как сказал, это работает большую часть времени, которое неt было в случае с предупреждением о массовом назначении)

Запись SalesTransaction создается все время, только запись выплат не обновляется ()sometime

Я удалил большинство нежелательных (здесь) ассоциаций изsales_transactions а такжеpayouts для краткости кода

Нет, нет ничего подобногоaccepts_nested_attributes_for на любой из моделей

Динамические проверки не прилагаются, дополнительные, дополнительные

Наконец, вот как яя пытаюсь создатьSalesTransaction

  options =  {"performer_id"=>177, "customer_id"=>35526, "sale_type"=>"sale", "show_id"=>502, "performer_percentage"=>BigDecimal.new("40.0"), "show_duration"=>4104, "gross_credits"=>3754, "gross_sales"=>BigDecimal.new("375.4"), "amount"=>BigDecimal.new("150.16"), "affiliate_id"=>nil, "affiliate_earning"=>BigDecimal.new("0.0"), "total_profit"=>BigDecimal.new("225.24"), "payout_period_id"=>89,"payout_id"=>4156, "stream_connection_id"=>540572, "history_id"=>44575, "credits"=>{:when_show_started=>350, :purchased_during_show=>{:free=>[], :paid=>[]}, :total_consumed=>{:free=>350, :paid=>3754}}, "sliding_scale_recalculations_done"=>false, "paid_minutes"=>62.57}

SalesTransaction.create(options)

Ответы на вопрос(1)

Ваш ответ на вопрос