1

PublicActivity ジェム ( https://github.com/pokonski/public_activity ) を使用するアプリを作成していますが、このジェムは「Facebook」のようなアクティビティ ストリームを作成するための優れた方法ですが、価格も低くなります。データベースのロード時間。

Sidekiq読み込み時間を短縮するために、次のように処理をプロセッサにオフロードしています。

ActivityLogWorker.perform_async object_id: @video.id, klass: :video, owner_id: @athlete.id, activity: :create

これが私の労働者です:

class ActivityLogWorker
  include Sidekiq::Worker
  sidekiq_options queue: :activity_log

  def perform(opts = {})
    obj = "#{opts.delete('klass')}".capitalize.constantize.find(opts.delete('object_id'))
    owner = User.find(opts.delete('owner_id'))
    activity = opts.delete('activity').to_sym
    obj.create_activity activity, owner: owner
  end
end

object_idそのオブジェクトに付随するクラスを明確にすることなく、を渡すより良い方法はありますか?

4

1 に答える 1

1

何が「より良い」と見なされるかはわかりませんが、オブジェクト自体を渡して、ワーカーにその ID とそのクラスを照会させることができます。

于 2013-08-19T19:48:07.687 に答える