2016-05-25 5 views
1

Я создаю приложение в рельсах, которое позволяет пользователям публиковать товары для продажи в течение заданного времени. У каждого продукта есть другое «end_time», в котором я хочу запустить метод, который устанавливает, что статус продукта «мертв».
Я читаю драгоценный камень Wheneverize, но насколько я могу судить, я буду использовать его для выполнения повторяющихся задач каждую минуту, час, день и т. Д. Любые идеи о том, как я буду заниматься запустив задание cron, которое будет работать в конкретном «конечном времени» каждого продукта?
Выполнение задания cron в разное время для каждой работы

, например, что-то вдоль линий:

live_products = Product.where('status = ?', 'live') 

live_products.each do |product| 
at: product.end_time do 
    product.status = 'dead' 
    product.save 
end 
end 
+0

взгляд на эту ссылку .. может помочь вам [stackoverflow.com/questions/4602418](http://stackoverflow.com/questions/4602418/rails-whenever-gem-dynamic-values/31075237#31075237) – Mukesh

ответ

0

Cronjob, каждую минуту, проверяя для тех, которые нуждаются в транзакции мертвых.

Product.turn_dead.update_all status: :dead 



#product.rb 
scope :live, -> {where status: :live} 
scope :out_of_time, -> {where "end_time <= ?", Time.now} 
scope :turn_dead, ->{ live.out_of_time }