Pergunta

Eu gostaria de agendar um trabalho atrasado que contém uma consulta (ou condições) de registro ativo que será avaliada quando o trabalho for realmente executado.

Ex. Eu tenho um trabalho personalizado que está gerando e enviando notificações para os usuários. Quero enviar parâmetros/consulta/condições para o trabalho que filtraria os usuários para os quais as notificações são enviadas.

Eu poderia avaliar uma corda, mas isso parece tão feio.

O projeto está usando o Rails 2.3.5 para que eu não possa seguir a rota Arel.

Eu vejo coisas sobre ambição, mas nada desde 2008, então não tenho certeza do status do projeto.

Sugestões?

Foi útil?

Solução

Você pode enviar as condições etc como um hash para o trabalho quando o criar e depois usá -lo como normalmente faz com o ActiveRecord. Talvez algo assim:

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

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

end

E então você cria o trabalho assim:

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

Se isso não estiver funcionando para você, talvez você possa fornecer seu código atual.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top