Rails Rails 创建自定义主键执行迁移后数据库中未被设置为主键

mumu · 2015年12月31日 · 最后由 torvaldsdb 回复于 2017年02月15日 · 2551 次阅读

通过以下命令创建数据迁移脚本,执行后, 数据库中没有生成默认主键 id,但是新创建的主键在数据库中也没有被设置为主键,是什么原因呢?

class CreateDepts < ActiveRecord::Migration
  def change
    create_table :depts,id:false ,primary_key: :dept_id do |t|
      t.string :dept_id,null:false
      t.string :dept_name
      t.string :modality_name_str
      t.string :modality_memo
      t.boolean :flag_invalid
      t.string :hospital_id
      t.timestamps null: false
    end
  end
end

class Project < ActiveRecord::Base
  self.primary_key = "sysid"
end

Project.primary_key # => "sysid"

http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/PrimaryKey/ClassMethods.html#method-i-primary_key

你这行代码create_table :depts,id:false ,primary_key: :dept_id do |t| 中的id: false就表示不想要 primary key 吧

去掉 id: falset.string dept_id, null: false

create_table :depts,primary_key: :dept_id do
需要 登录 后方可回复, 如果你还没有账号请 注册新账号