我想安排一个包含活动记录查询(或多个条件)的延迟作业,这些查询将在作业实际运行时进行评估。
实施例。我有一个自定义作业生成并向用户发送通知。 我想将参数/查询/条件发送到作业,该作业将过滤发送通知的用户。
我可以评估一个字符串,但这看起来很难看。
该项目正在使用Rails 2.3.5,因此我无法使用Arel路线。
我看到有关Ambition的内容,但自2008年以来什么都没有,所以我不确定该项目的状态。
建议?
答案 0 :(得分:1)
您可以在创建条件时将条件等作为哈希发送到作业,然后像使用ActiveRecord一样使用它。也许是这样的:
class NotificationJob < Struct.new(:message, :query)
def perform
@users = User.all(query)
...
end
end
然后你就像这样创建Job:
query = {:conditions => ["users.company_id = ?", @company.id]}
Delayed::Job.enqueue(NotificationJob.new("There is no cake",query), 0, Time.now)
如果这不适合你,那么也许你可以提供当前的代码。