Rails:带回调的倒数计时器

问题描述:

嗨!我试图实现一个倒数计时器,我的应用程序中有一个“oferts”模型,您可以设置它的时间可用,并且倒计时播放的地方。Rails:带回调的倒数计时器

经过大量的研究,我发现这个Gem,它的作品像一个魅力,但林面临一个问题,当倒计时达到cero时我怎么得到事件?

我的意思是,我的“oferts”模型有一个布尔属性为“主动”,我想,当倒计时结束更改为false

,你会怎么做属性“活动”?有什么建议?是使用正确的那个宝石?

感谢您的帮助

+0

而不是'active'列,为什么不只是有某种'end_date'列保存它的时间戳是无效的? – 2015-02-05 17:24:59

+0

显示最少的代码。代码不仅仅是一个描述,我们必须想象你所做的事情。 – 2015-02-05 18:16:39

大,我们在grupoly实施这样的系统你所描述的。

但是你错在想,我会为任何需要这个的人提供解决方案。

首先我将创建一个oferts模型这样一个范围:

#ofert.rb  
scope :are_ready_to_inactive, -> { 
     where(active: true).where('ends_at <= ?', Time.zone.now) 
    } 

所以我supose你有一个属性,叫做ends_at所以我们得到的所有oferts他们ends_at小于当前时间,它意味着所有过期的事情。

然后你只需要创建停用所有这些oferts rake任务已过期:现在如果您在控制台中运行

#lib/tasks/oferts.rake 
namespace :oferts do 
    desc "Inactive oferts with cron on certain time" 
    task inactivatethem: :environment do 
     Ofert.are_ready_to_inactive.find_each do |ofert| 
      ofert.update_attributes active: false 
     end 
    end 
end 

rake oferts:inactivatethem你会灭活所有已经过期,你可以在oferts使运行该rake任务使用像每当宝石

#config/schedule.rb 
every 1.minute do 
    rake 'oferts:inactivatethem' 
end 

现在,如果你需要实时显示倒计时,你可以用一个jQuery插件,像jQueryCountDown宝石例如每一分钟,我认为有现成的瑰宝对于asse t管道,你只需要按照说明那里。

我希望你明白倒计时只是“可视的”,它意味着它只对用户而言,它是一个只对客户端有意义的计时器,在后端你有你的耙子任务,每分钟运行一次forerts过期和失活他们。

我不会给你详细说明如何显示计时器,因为那只是jQuery的东西。

我希望这可以帮助任何人。