0

我使用带有哈希条件和时间范围从“Time.now”到-24 小时的查询。

@time_range = @time_now..(@time_now - 24*3600)
Model.all(:conditions => { :created_at => (@time_range) })

目前,所有超过 24 小时前创建的数据库记录都不会显示。显示小于 24 小时“旧”的所有记录。

我的目标是用来自数据库列“duration”的变量替换常量值 24。此列包含从 24 到 1 的整数值 - 取决于在表单中创建数据库记录的方式。

所以我需要访问这个“持续时间”列。但我不知道如何在控制器中做到这一点,因为我没有可用的模型实例。所以我不能说例如:

Model.duration*3600

或者:

:duration*3600

非常感谢任何提示。

PS:这个问题和另一个类似。不幸的是,我在那里找不到答案。

4

2 回答 2

0

那个回答比你想象的要简单一些。Rails 有一种用于计算时间的内置方法系统。

如果你想回去一天,你只需要做 1.day.from_now 或者你甚至可以做 2.day.from_now

这会将数据作为时间戳返回。

1.day.from_now.beginning_of_day

1.month.from_now.beginning_of_month

1.month.from_now

1.day.from_now
于 2012-07-17T22:53:46.310 回答
0

此代码可能更符合您的要求。不完全是您在谈论的内容,但我认为它是围绕您所评论的相同想法构建的。希望它可以提供帮助。

def self.days_from_now(d)
    self.where("due_date >= ? AND due_date <= ? ", d.day.from_now.beginning_of_day, d.day.from_now.end_of_day)
end
于 2012-07-26T05:44:12.263 回答