2014-09-21 53 views
1

我有一个ScheduleTime ActiveRecord对象,time是column_type :timeRails4 - 按时间和/或时间分钟查询?

我试图检索匹配当前的小时和分钟

ScheduleTime.all.select do |s| 
    now = Time.now 
    s.time.hour == now.hour && s.time.min == now.min 
end 

可在此与SQL在where条款做对象?

编辑:

我已经得到接近,我可以按小时查询:

编辑#2

这是我目前的执行情况。 ..

class ScheduleTime < ActiveRecord::Base 
    belongs_to :schedule 
    validates_presence_of :schedule_id, :time 

    scope :by_hour, ->(hour) { where("date_part('hour', time) = ?", hour) } 
    scope :by_minute, ->(minute) {where("date_part('minute', time) = ?", minute) } 
    scope :by_time, ->(time) { by_hour(time.hour).by_minute(time.min) } 
    scope :now, -> { by_time(Time.now) } 
end 
+0

从时间对象中获取分钟的方法是'min'而不是'minute',不是吗? – 2014-09-21 20:00:02

回答

1

最终版本看起来不错。只需确保使用Time.zone.now而不是Time.now,因为前者不会考虑应用程序的配置时区。

+0

谢谢!我计划把所有东西都转换成UTC,并且因为时区很难。 – 2014-09-21 20:18:51

+0

时区非常困难,为什么每个人都忽略它们? – thedanotto 2016-12-27 22:12:15