Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 获取错误“;Mysql2::错误:时间值不正确:'---&引用;在rails中保存记录时?_Ruby On Rails_Date_Datetime - Fatal编程技术网

Ruby on rails 获取错误“;Mysql2::错误:时间值不正确:'---&引用;在rails中保存记录时?

Ruby on rails 获取错误“;Mysql2::错误:时间值不正确:'---&引用;在rails中保存记录时?,ruby-on-rails,date,datetime,Ruby On Rails,Date,Datetime,我正在让桌子打孔。在相应的型号中,iam具有以下代码 class PunchInOut < ActiveRecord::Base belongs_to :employee serialize :check_in, Array serialize :check_out, Array end 请帮帮我。什么是正确的:“2012-12-31 11:30:45” 我相信你的字面意思是“2015-09-18 17:45:39.760533268+05:30”。 有关正确的

我正在让桌子打孔。在相应的型号中,iam具有以下代码

class PunchInOut < ActiveRecord::Base
    belongs_to :employee
    serialize :check_in, Array
    serialize :check_out, Array
end 
请帮帮我。

什么是正确的:“2012-12-31 11:30:45”

我相信你的字面意思是“2015-09-18 17:45:39.760533268+05:30”。
有关正确的mysql日期时间格式的更多信息,请查看链接。祝你好运

您正在使用定义您的
签入
签出
属性。这意味着活动记录将它们转换为YAML表示形式,并尝试将该YAML表示形式存储为字符串

当它试图在mysql时间字段中存储YAML序列化时,mysql会响应您得到的错误,因为mysql无法在时间列中存储YAML字符串

要存储时间对象数组,您需要
check_in
check_out
在数据库中成为字符串列(如果要存储大的时间数组,甚至可能是文本列)


(如果您只想在时间、分钟和秒中存储时间<>代码>时间,现在还需要考虑。现在返回一个日期/时间,以完整的日期为单位。这将在一天/月/年,而不只是小时/分钟/秒的情况下被序列化。

< P>参见同样的问题的相应答案:

不能同时序列化和存储在时间列中。序列化产生一个文本(实际上,是以YAML格式编码的),数据库不知道它是日期或其他什么


在时间/时间戳/日期列中,您只能存储单个值。

要格式化时间,您可以使用以下值:TIME.now.To_s(:db)
class ChangePunchInOutFields < ActiveRecord::Migration
  def change
    change_column :punch_in_outs, :date,  :date
    change_column :punch_in_outs, :check_in,  :time
    change_column :punch_in_outs, :check_out,  :time 
  end
end
2.2.2 :001 > reload!
Reloading...
 => true 
2.2.2 :002 > p = PunchInOut.new
 => #<PunchInOut id: nil, employee_id: nil, check_in: [], check_out: [], date: nil, created_at: nil, updated_at: nil, shift_id: nil, shift_name: nil> 
2.2.2 :003 > p.check_in << Time.now
 => [2015-09-18 17:45:39 +0530] 
2.2.2 :004 > p.save
   (0.3ms)  BEGIN
  SQL (2.2ms)  INSERT INTO `punch_in_outs` (`check_in`, `check_out`, `created_at`, `updated_at`) VALUES ('---\n- 2015-09-18 17:45:39.760533268 +05:30\n', '--- []\n', '2015-09-18 12:15:44', '2015-09-18 12:15:44')
Mysql2::Error: Incorrect time value: '---
- 2015-09-18 17:45:39.760533268 +05:30
' for column 'check_in' at row 1: INSERT INTO `punch_in_outs` (`check_in`, `check_out`, `created_at`, `updated_at`) VALUES ('---\n- 2015-09-18 17:45:39.760533268 +05:30\n', '--- []\n', '2015-09-18 12:15:44', '2015-09-18 12:15:44')
   (0.2ms)  ROLLBACK
ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect time value: '---
- 2015-09-18 17:45:39.760533268 +05:30