Rails使用“Date”类型的列创建记录

时间:2015-01-10 05:17:37

标签: ruby-on-rails ruby oracle date datetime

我有一个名为record的类,它包含以下列:

'ID' INT, 
'RECORD' VARCHAR2(50),
'CREATED_AT' DATE,
'UPDATED_AT' DATE,
'MANUAL_UPDATE' DATE

我想使用以下代码插入新记录:

Record.new(ID: '1', RECORD: 'Foo', MANUAL_UPDATE: '20150110122356')

将创建新记录,但在MANUAL_UPDATE列中,值将变为Nil。

我想以'%Y%m%d%H%M%S'的格式创建一个包含提供字符串的记录。我该怎么做?

有关数据库结构的更多信息:

CREATE TABLE ZMNS_TEST.SAVED_ITEMS
(
  ID                             INT NOT NULL,
  RECORD                         VARCHAR2(50 CHAR) NOT NULL,
  CREATED_AT                     DATE NOT NULL,
  UPDATED_AT                     DATE NOT NULL,
  MANUAL_UPDATE                  DATE,
)

2 个答案:

答案 0 :(得分:1)

您正尝试将String(时间戳)插入Date列,因此您获得了nil。您有两种选择:

1>更新正确的日期,如:

Record.new(ID: '1', RECORD: 'Foo', MANUAL_UPDATE: Date.today)

2 - ;将时间戳转换为日期,然后更新:

date = Date.strptime("20150110122356",'%Y%m%d%H%M%S')
#=> Sat, 10 Jan 2015
Record.new(ID: '1', RECORD: 'Foo', MANUAL_UPDATE: date)

答案 1 :(得分:0)

尝试以下方法

Date.strptime('20150110122356', '%Y%m%d%H%M%S')

Record.new(ID: '1', RECORD: 'Foo', MANUAL_UPDATE: Date.strptime('20150110122356', '%Y%m%d%H%M%S'))