callbacks de trilhos não sendo executados

Para minha vida eu estou tentando descobrir porque meus callbacks não estão sendo executadossometimes(você ouviu direitoas vezes como na maioria das vezes funciona fora da caixa)

Tudo o que tenho são relações pais / filhos entre dois modelos

após a criação de registro infantil tudo o que estou fazendo emafter_create o retorno de chamada é atualizar (acumular todo o valor filho no campo pai para evitar consulta pesada em tempo de execução) o campo de valor no registro de tabela pai / modelo

Modelo pai (Payout)

Modelo filho é (Sales Transaction)

Payout tem muitos SalesTransactions como dito acima após a criação da transação de vendas estou atualizando (incremento para ser preciso) oamount campo do registro pai (registro de pagamento) para evitar consultas pesadas no tempo de execução.

então Pagamentoamount field não é nada, mas soma de todo o montante dosales_transactions desses pagamentos

é tão bom quanto dizer como payout.amount seria (após o callback ser executado)

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

e isso que eu estou tentando alcançar usando callbacks

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

A parte interessante aqui é quesometime quando SalesTransaction écreated o retorno de chamada não é chamado, pois não vejo o valor de atualização do registro de pagamentos

Eu estou tentando evitar o retorno de chamada por enquanto, mas pelo bem saberwhy o retorno de chamada não está sendo executado temled me fazer esta pergunta

NOTA

Não há validação nem na tabela SalesTransaction e Payout (verifiquei isso 1000 vezes)Payout.validators => []

SalesTransaction.validators => []

Não há problema de asssignação em massa, como eu não definiattr_accessible ouattr_protected (Eu também verifico isso e também como disse que funciona a maior parte do tempo que não teria sido o caso com aviso de atribuição em massa)

O registro SalesTransaction está sendo criado o tempo todo, somente o registro de pagamentos não está sendo atualizado (sometime)

Eu removi a maioria das associações indesejadas (por aqui) desales_transactions epayouts para brevidade de código

Não, não há nada comoaccepts_nested_attributes_for em qualquer um dos modelos

Nenhuma validação dinâmica anexada, extra, extra

Por último, aqui como eu estou tentando criar oSalesTransaction

  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)

questionAnswers(2)

yourAnswerToTheQuestion