Rails从我的数据库记录返回错误的日期。对于我的模型(“目标”),如果我在脚本/控制台中运行:
Target.find :all
我使用“recorded_on”字段读取所有记录,读取日期为“ 2000-01-01 xx:xx:xx”。
如果我使用相同的数据库并在sqlite3控制台中运行:
SELECT * FROM targets;
我使用“recorded_on”字段读取所有记录,读取日期为“ 2009-04-22 xx:xx:xx”,这是正确的日期。
两者之间的时间值似乎正确,只有日期值关闭。
发生了什么事?
答案 0 :(得分:0)
rails和数据库之间时间的可靠转换取决于I had no patience to tackle的许多rails和数据库配置voodoo。
我的最终解决方案是停止在数据库中存储时间值。我存储了整个:
Modelname.time_column = Time.now().to_i
(实际上,我在覆盖属性的setter时执行to_i位并反转getter中的进程:)
Time.at(read_attribute(:time_column))
这是一个黑客,但我很高兴它的简单性和在配置和开发机器之间移动它是多么简单。
当然,缺点是当你查询它时,sql会给你一个老式的int。 MySQL可能有转换的方法,但我怀疑SQLite会不会。