ActiveRecord - 在所有事务完成提交到db之后的回调

时间:2015-09-25 18:12:49

标签: ruby-on-rails ruby

这是我的模特。我希望set_variations方法只在所有事务都完成提交到数据库时运行..使用当前的after_commit,它在每次提交后运行该方法..我想的可能是某种类型的计数器,但我不知道知道在这个过程完成之前会添加多少新产品。怎么做?

class Product < ActiveRecord::Base
  belongs_to :merchant

  validates :sellersku, uniqueness: true
  validates :asin, uniqueness: true

  include Send

  before_save     :split_off 
  after_commit    :set_variations


  def split_off
    @merchant = self.merchant_id
    self.five_of_asin = self.asin[0,5]
    self.twenty_of_title = self.title[0,20]
  end

  def set_variations
    binding.pry
    Product.where(merchant_id: @merchant).find_each do |merch|
      variations = merch.group(:twenty_of_title).count
    end
  end
end

0 个答案:

没有答案