Ruby on rails 获取错误“;Mysql2::错误:时间值不正确:'---&引用;在rails中保存记录时?
我正在让桌子打孔。在相应的型号中,iam具有以下代码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”。 有关正确的
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