【问题标题】:Rails 4 migration: Create mysql table with primary key but without auto_incrementRails 4 迁移:使用主键但没有 auto_increment 创建 mysql 表
【发布时间】:2023-03-19 13:56:01
【问题描述】:

可能重复How to turn off auto_increment in Rails Active Record

Rails 新手,我想创建一个 fm_zipcodeszipcode 作为主键,但我不想要额外的 auto_increment。我尝试了不同的方法,但没有一个对我有用,auto_increment 没有反映在db/schema.rb 文件中。

create_table :fm_zipcodes, :primary_key => :zipcode do |t|
  t.integer :state_id, null: false
  ..
end

关闭答案https://stackoverflow.com/a/17960388/1093542

【问题讨论】:

标签: mysql ruby ruby-on-rails-4 ruby-on-rails-4.2


【解决方案1】:

我会这样做:

# in your migration
def up
  create_table :fm_zipcodes, id: false do |t|
    t.integer :zipcode, null: false
    # ...
  end
  add_index :fm_zipcodes, :zipcode, unique: true
end

# in your FmZipcode model
self.primary_key = 'zipcode'

【讨论】:

    【解决方案2】:
    create_table :fm_zipcodes do |t|
      t.integer :zipcode, null: false
    # ...
    end
    add_foreign_key :fm_zipcodes, :zipcode
    

    更多信息请查看http://api.rubyonrails.org/?q=add_foreign_key

    【讨论】:

    • OP 不想拥有zipcodes 表的外键。他希望在fm_zipcodes 表上拥有一个zipcode 列作为主键。
    猜你喜欢
    • 1970-01-01
    • 2013-07-26
    • 2012-12-21
    • 2010-09-10
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多