我使用带有哈希条件且时间范围从“Time.now”到-24小时的查询。
@time_range = @time_now..(@time_now - 24*3600)
Model.all(:conditions => { :created_at => (@time_range) })
目前,将不会显示超过24小时前创建的所有数据库记录。显示小于24小时“旧”的所有记录。
我的目标是用来自数据库列“持续时间”的变量替换长度值24。此列包含从24到1的整数值 - 具体取决于在表单中创建数据库记录的方式。
所以我需要访问这个“持续时间”列。但是我不知道Controller中是怎么做到的,因为我没有可用的模型实例。所以我不能说例如:
Model.duration*3600
或:
:duration*3600
非常感谢任何提示。
PS:这个问题类似于another one。不幸的是,我找不到答案。
答案 0 :(得分: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
答案 1 :(得分: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