嗨!我试图实现一个倒数计时器,我的应用程序中有一个“oferts”模型,您可以设置它的时间可用,并且倒计时播放的地方。Rails:带回调的倒数计时器
经过大量的研究,我发现这个Gem,它的作品像一个魅力,但林面临一个问题,当倒计时达到cero时我怎么得到事件?
我的意思是,我的“oferts”模型有一个布尔属性为“主动”,我想,当倒计时结束更改为false
,你会怎么做属性“活动”?有什么建议?是使用正确的那个宝石?
感谢您的帮助
嗨!我试图实现一个倒数计时器,我的应用程序中有一个“oferts”模型,您可以设置它的时间可用,并且倒计时播放的地方。Rails:带回调的倒数计时器
经过大量的研究,我发现这个Gem,它的作品像一个魅力,但林面临一个问题,当倒计时达到cero时我怎么得到事件?
我的意思是,我的“oferts”模型有一个布尔属性为“主动”,我想,当倒计时结束更改为false
,你会怎么做属性“活动”?有什么建议?是使用正确的那个宝石?
感谢您的帮助
大,我们在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的东西。
我希望这可以帮助任何人。
而不是'active'列,为什么不只是有某种'end_date'列保存它的时间戳是无效的? – 2015-02-05 17:24:59
显示最少的代码。代码不仅仅是一个描述,我们必须想象你所做的事情。 – 2015-02-05 18:16:39