时间格式的替代

时间:2016-05-24 07:08:05

标签: ruby-on-rails ruby postgresql timestamp actionmailer

我正在构建一个使用动作邮件的rails应用程序。 我希望能够在特定活动开始前2小时发送电子邮件。

def notification(user, event)
  @user = user
  @event = event
  @delivery_time = @event.start_at - INTERVAL '2 hour' 

  mail( to: @user.email,
  subject: "Upcoming event")
end

event.start_at是时间戳格式。

是否可以

 event.start_at - INTERVAL - '2 hours'

我知道你可以在postgresql中做类似的事情

 timestamp '2001-09-28 23:00' - interval '23 hours'

根据 Postgresql

1 个答案:

答案 0 :(得分:0)

就像他们评论中提到的sundayAdefila一样,你可以这样做:

event.start_at - 2.hours

要查找在接下来的2小时内开始的活动,您可以将ActiveRecord查询写为

Event.where(start_at: Time.now..Time.now + 2.hours)

上述更好的方法(如下面的评论所示):

Event.where(start_at: Time.now..2.hours.from_now) 

将转换为SQL查询,如:

SELECT `events`.* FROM `events` WHERE (`events`.`start_at` BETWEEN '2016-05-24 11:01:34' AND '2016-05-24 13:01:34')