schema.rb中的Id列

时间:2013-07-25 16:50:32

标签: ruby-on-rails ruby-on-rails-3

每次,我的schema.rb文件中都有一个我的事件对象列(event-calendar gem)

t.integer  "id", :null => false

当然,每当我想创建一个事件时,我都会收到错误“列中的空值”id“违反了非空约束”,因为这个。我试过这个解决方案ActiveRecord::StatementInvalid: PG::Error: ERROR: null value in column "id" violates not-null constraint,但每次都会出现!我想知道为什么这个专栏出现在这里,我真的不明白......

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

创建事件模型时,听起来好像添加了一个id字段。这不是必需的,因为rails会自动创建此字段。架构中的事件模型应如下所示:

create_table "events", :force => true do |t|
  t.string   "name"
  t.datetime "created_at",  :null => false
  t.datetime "updated_at",  :null => false
end

我会回滚迁移,假设这是最近的迁移:

rake db:rollback

然后更新迁移文件并从create_table块中删除id:

class CreateEvents < ActiveRecord::Migration
  def change
    create_table :events do |t|
      t.string :name

      t.timestamps
    end
   end
end

然后重新运行迁移。