0

我想安排一个包含活动记录查询(或条件)的延迟作业,该作业将在实际运行作业时进行评估。

前任。我有一个自定义作业,它正在生成并向用户发送通知。我想将参数/查询/条件发送到将过滤通知发送到的用户的作业。

我可以评估一个字符串,但这看起来很丑陋。

该项目使用的是 Rails 2.3.5,所以我不能走 Arel 路线。

我看到了关于 Ambition 的资料,但自 2008 年以来就没有了,所以我不确定该项目的状态。

建议?

4

1 回答 1

1

您可以在创建作业时将条件等作为哈希发送到作业,然后像通常使用 ActiveRecord 一样使用它。也许是这样的:

class NotificationJob < Struct.new(:message, :query)

  def perform
    @users = User.all(query)
    ...
  end

end

然后你像这样创建作业:

query = {:conditions => ["users.company_id = ?", @company.id]}
Delayed::Job.enqueue(NotificationJob.new("There is no cake",query), 0, Time.now)

如果这对您不起作用,那么也许您可以提供您当前的代码。

于 2010-12-10T04:28:48.027 回答