我有一个事件模型,其start_at类型为datetime。如何搜索以查找今天是否还有一个事件,所以start_at从现在到午夜。
由于
答案 0 :(得分:11)
在Rails 3中,您现在可以执行此操作:
范围条件
如果您正在寻找内部范围 一个表(例如,用户创建 在某个时间范围内)你可以使用 条件选项加上 在SQL语句中。如果你有 两个日期从控制器进来 你可以做这样的事情 寻找范围:
Client.where(:created_at => (params[:start_date].to_date)..(params[:end_date].to_date))
所以在你的情况下,它将是:
Event.where(:start_at => (Time.zone.now)..(Time.zone.now.end_of_day))
刚刚经过测试,它在Time.zone.now
和Time.zone.now.end_of_day
附近也没有括号。
(来自Rails Guides)
答案 1 :(得分:3)
Event.where('start_at >= ? and start_at <= ?', Time.zone.now, Time.zone.now.end_of_day)
如果您希望这对多个用户完全准确,则必须处理用户时区。
答案 2 :(得分:0)
Event.where("start_at BETWEEN ? AND ?", Time.zone.now, Time.zone.now.end_of_day)