Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 时间属性在保存到Rails中的数据库时发生更改_Ruby On Rails_Ruby_Activerecord_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 时间属性在保存到Rails中的数据库时发生更改

Ruby on rails 时间属性在保存到Rails中的数据库时发生更改,ruby-on-rails,ruby,activerecord,ruby-on-rails-4,Ruby On Rails,Ruby,Activerecord,Ruby On Rails 4,我有一个名为event的模型,带有时间属性。我正在将它设置为Time.now,如果我在保存之前记录对象上的时间,那么它将在当前时间之后一两秒,正如预期的那样。但一旦对象被保存并在数据库中找到,时间就不同了,日期部分是2000年1月1日。这是什么原因造成的,我该怎么做才能确保我的时间被正确保存?编辑:列类型为时间,数据库为SQLite。听起来您可能在保存时间对象而不是日期对象 活动记录允许您使用时间、日期和日期时间对象 但是,如果您使用的是时间或日期对象,它们仍然是一种不好的解释方式,请参阅下面的

我有一个名为event的模型,带有时间属性。我正在将它设置为Time.now,如果我在保存之前记录对象上的时间,那么它将在当前时间之后一两秒,正如预期的那样。但一旦对象被保存并在数据库中找到,时间就不同了,日期部分是2000年1月1日。这是什么原因造成的,我该怎么做才能确保我的时间被正确保存?编辑:列类型为时间,数据库为SQLite。

听起来您可能在保存时间对象而不是日期对象

活动记录允许您使用时间、日期和日期时间对象

但是,如果您使用的是时间或日期对象,它们仍然是一种不好的解释方式,请参阅下面的链接响应以了解完整日期时间对象的更多详细信息。当您阅读它们时,时间对象上会显示日期,通常为2000年1月1日

如何确保正确保存我的时间

如果保存/读取完整的DATE时间对该字段非常重要,您可能需要考虑更改表示模型的迁移使用:

object.datetime
。而不是:

object.time

有关更多详细信息,请参阅此响应:

听起来您可能正在保存时间对象,而不是日期对象

活动记录允许您使用时间、日期和日期时间对象

但是,如果您使用的是时间或日期对象,它们仍然是一种不好的解释方式,请参阅下面的链接响应以了解完整日期时间对象的更多详细信息。当您阅读它们时,时间对象上会显示日期,通常为2000年1月1日

如何确保正确保存我的时间

如果保存/读取完整的DATE时间对该字段非常重要,您可能需要考虑更改表示模型的迁移使用:

object.datetime
。而不是:

object.time


有关更多详细信息,请参阅此响应:

我不认为它们仍然是完整的datetime对象。如果我用PostgreSQL创建一个日期列,它将是Ruby中的日期和数据库中的日期。你说得对。这就是为什么我说这是一种糟糕的解释方式的部分原因。这是一个很好的信息量,将扩大后不必要的。这就是为什么我添加了一个更具描述性的答案的链接。但是你仍然有三种不同的类型,我不知道2000-01-01会从何而来。这个问题有很多我们在这里看不到的变量,这可能是导致不同数据库在处理类时间值的方式上不同的具体问题,例如,我不认为它们仍然是一种完整的datetime对象。如果我用PostgreSQL创建一个日期列,它将是Ruby中的日期和数据库中的日期。你说得对。这就是为什么我说这是一种糟糕的解释方式的部分原因。这是一个很好的信息量,将扩大后不必要的。这就是为什么我添加了一个更具描述性的答案的链接。但是你仍然有三种不同的类型,我不知道2000-01-01会从何而来。这个问题有很多我们在这里看不到的变量,这可能是导致不同数据库在处理类时间值的方式上不同的具体问题,例如,哪个数据库?什么是列类型?如果列类型是Datetime,并且您节省了时间。现在它应该可以正常工作。请按照@muistooshorti的建议提供列类型、数据库适配器。如果您发布事件迁移,我们可以给您更具体的响应。您的迁移可能有t.time:time,根据下面我的回答,您可能希望将其更改为t.datetime-但在您向我们展示之前,我们无法100%确定。了解数据库中的时间值也会有所帮助。哪个数据库?什么是列类型?如果列类型是Datetime,并且您节省了时间。现在它应该可以正常工作。请按照@muistooshorti的建议提供列类型、数据库适配器。如果您发布事件迁移,我们可以给您更具体的响应。您的迁移可能有t.time:time,根据下面我的回答,您可能希望将其更改为t.datetime-但在您向我们展示之前,我们无法100%确定。了解数据库中的时间值也是很有帮助的。