使用后台作业创建/更新/销毁记录时,Rails回调不起作用

时间:2017-10-05 10:00:48

标签: ruby-on-rails

我正在使用 sidekiq-limit_fetch (带有redis)gem进行后台处理。我有以下模态和回调

class Modal < ApplicationRecord

  # ======== Callbacks ==============================
  after_create :add_activity


  def add_activity
    p 'came here ************'
    p 'came here ************'
    #  Do some operations here  
  end

end

我的工作如下

class ActivityWorker
  include Sidekiq::Worker

  # TODO - Update goal satisfied people
  def perform(campaign_id)
    Modal.create(data: data)
  end
end

我可以在表中看到一些记录但是没有调用after_create回调。我认为回调仅在使用模型/控制器创建/更新/销毁时才有效。我怀疑吗?如果是,请建议我使用回调作业的任何其他方式。

1 个答案:

答案 0 :(得分:0)

我建议您编写服务来调用或只编写自己的方法,尽可能少地使用回调。

以下是我的服务方式示例

服务/ create_modal_service.rb

<Application x:Class="<omitted>"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="<omitted>">
<Application.Resources>

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>

            <ResourceDictionary Source="Themes/Generic.xaml"/>

        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

</Application.Resources>