2

每次,我的 schema.rb 文件中都有我的事件对象(事件日历 gem)的列

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

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

任何的想法 ?

4

1 回答 1

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

然后重新运行迁移。

于 2013-07-25T22:07:34.967 回答