Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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 在Postgres上使用Rails的Datetime字段_Ruby On Rails_Postgresql_Activerecord_Rails Postgresql - Fatal编程技术网

Ruby on rails 在Postgres上使用Rails的Datetime字段

Ruby on rails 在Postgres上使用Rails的Datetime字段,ruby-on-rails,postgresql,activerecord,rails-postgresql,Ruby On Rails,Postgresql,Activerecord,Rails Postgresql,我正在使用Rails与Postgres制作一个日程安排应用程序。我有一个带有两个timedate列的模型班次,start_at和end_at。创建它的迁移过程如下所示: class CreateShifts < ActiveRecord::Migration def change create_table :shifts do |t| t.references :user t.references :schedule t.datetime :

我正在使用Rails与Postgres制作一个日程安排应用程序。我有一个带有两个timedate列的模型班次,start_at和end_at。创建它的迁移过程如下所示:

class CreateShifts < ActiveRecord::Migration
  def change
    create_table :shifts do |t|
      t.references :user
      t.references :schedule
      t.datetime :start_at
      t.datetime :end_at
      t.string :position
      t.string :notes

      t.timestamps
    end
    add_index :shifts, :user_id
    add_index :shifts, :schedule_id
  end
end
我在DB保存之前创建了一个有效的DateTime对象,因为我使用了记录器来显示它,并且它是正确的。参数如下所示:

{"utf8"=>"✓",
 "authenticity_token"=>"qornHMTAdikZJP/sByPIg//fFuYHHAQH3M/0R9XnP+o=",
 "shift"=>{"user_id"=>"1",
 "start_at(1i)"=>"2011",
 "start_at(2i)"=>"11",
 "start_at(3i)"=>"14",
 "start_at(4i)"=>"00",
 "start_at(5i)"=>"01",
 "end_at(1i)"=>"2011",
 "end_at(2i)"=>"11",
 "end_at(3i)"=>"14",
 "end_at(4i)"=>"00",
 "end_at(5i)"=>"02",
 "position"=>"",
 "notes"=>""},
 "schedule_id"=>"1"}

但是,我可以通过控制台将两个字段都设置为时间来创建记录。现在。

错误消息非常清楚:
INSERT
语句中的
$2
time
类型,而不是
timestamp
(datetime)类型

插入“班次”

(“创建时间”、“结束时间”、“备注”、“职位”、“计划id”、“开始时间”、“更新时间”、“用户id”)

返回“id”的值($1、$2、$3、$4、$5、$6、$7、$8)

我的。 您一定是混淆了参数,
$2
显然不是您在发布结束时显示的参数。或者您在分配前无意中将其强制转换为时间。您分配
$2
的部分在问题中不可见,这很可能是问题发生的地方


可能是你的问题中的某种打字错误,你提到的是
timedate
,而不是
datetime

实际上我只需要重新启动Thin。即使在开发模式下,将col从
time
更改为
datetime
的迁移也没有生效,因此它试图将
time
保存到字段中。这里也存在同样的问题-我只需重新启动rails服务器-不确定您为什么接受Erwin的答案-答案似乎是您重新启动服务器的注释。
{"utf8"=>"✓",
 "authenticity_token"=>"qornHMTAdikZJP/sByPIg//fFuYHHAQH3M/0R9XnP+o=",
 "shift"=>{"user_id"=>"1",
 "start_at(1i)"=>"2011",
 "start_at(2i)"=>"11",
 "start_at(3i)"=>"14",
 "start_at(4i)"=>"00",
 "start_at(5i)"=>"01",
 "end_at(1i)"=>"2011",
 "end_at(2i)"=>"11",
 "end_at(3i)"=>"14",
 "end_at(4i)"=>"00",
 "end_at(5i)"=>"02",
 "position"=>"",
 "notes"=>""},
 "schedule_id"=>"1"}