Хранение неоцененного запроса ActiveRecord в DelayedJob - PullRequest
0 голосов
/ 10 декабря 2010

Я бы хотел запланировать отложенное задание, содержащее запрос (или условия) активной записи, которые будут оцениваться при фактическом выполнении задания.

Пример.У меня есть пользовательское задание, которое генерирует и отправляет уведомления пользователям.Я хочу отправить параметры / запрос / условия в задание, которое бы отфильтровывало пользователей, которым отправляются уведомления.

Я мог бы проверить строку, но это выглядит ужасно.

Проект используетRails 2.3.5, поэтому я не могу идти по маршруту Арель.

Я вижу кое-что о Ambition, но ничего с 2008 года, поэтому я не уверен в статусе проекта.

Предложения?

1 Ответ

1 голос
/ 10 декабря 2010

Вы можете отправить условия и т.д. в качестве хэша к заданию при его создании, а затем использовать его так же, как вы обычно делаете с 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)

Если это не работает для вас, возможно, вы можете указать свой текущий код.

...