Bạn có thể sử dụng Sidekiq Unique Jobs
với cách tiếp cận này, chỉ có 1 công việc có cùng thông số sẽ xuất hiện đồng thời.
vì vậy hãy tạo mô hình
class UserJobs
belongs_to :user
end
class User
has_many :user_jobs
end
class Worker
sidekiq_options unique: true
def perform params
user = User.find(params[:id])
user.user_jobs.order('id asc').each do |job|
job.worker_class.constantize.new.perform(job.params)
job.destroy
end
end
end
so với khi bạn cần chạy bất kỳ công việc nào cho người dùng:
user.user_jobs.create worker_class: Klass, params: params
Worker.perform_async(user_id: user.id)