【发布时间】:2015-06-05 08:44:10
【问题描述】:
是否可以使用 Rails 的新 ActiveJob API 来对代码块进行排队?有时我不想在那里生成工作并将逻辑移到那里。它将知识从我宁愿保留在那里的模型中移出。
让我举一个我目前正在从事的项目中的例子。这有点奇怪,但它让我将所有知识都保留在我的模型中。
# app/models/subscription.rb
class Subscription < ActiveRecord::Base
def cancel
CancelSubscriptionJob.perform(self)
end
def cancel_tasks
# stuff that takes a long time
end
end
# app/jobs/cancel_subscription_job.rb
class CancelSubscriptionJob < ActiveJob::Base
def perform(subscription)
subscription.cancel_tasks
end
end
我觉得我要绕过我的手肘来获取我的 !@# 在这里。我想可以说cancel_tasks 方法属于这项工作,但我不喜欢这样。我想查看模型中的取消任务,我一直在保留此类知识的其余部分。
还有一个论点是这些都不属于模型,但在 Rails 的某个时刻,我觉得所有人都告诉我要做的就是提取、提取和提取,直到我没有完成任何实际工作.
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4.2