迁移中没有自动增量选项的id字段

8 ruby-on-rails

我有这样的数据库迁移:

 class CreateParticipations < ActiveRecord::Migration
      def self.up
        create_table(:participations, :primary_key => 'Seat')  do |t|      
          t.integer :Seat
          t.string :Nickname
          t.string :Clan
          t.string :FirstName
          t.string :LastName
          t.string :Email
          t.boolean  :Payed

          t.timestamps
        end
      end

      def self.down
        drop_table :participations
      end
    end
Run Code Online (Sandbox Code Playgroud)

现在,座位是使用自动增量创建的.但是,我不希望这样.我希望它没有自动增量.我将在我的逻辑中定义Seat.

我一直在寻找,但我找不到如何禁用auto_increment.

我该怎么做呢?除了在MySQL中手动执行它.

Adm*_*ver 17

为了记录,如果您绝对需要这样做(它不应该经常发生),这里是使用Rails迁移DSL执行非自动增量主键的方法:

create_table(:table_name, :id => false) do |t|
  t.integer :id, :options => 'PRIMARY KEY'
end
Run Code Online (Sandbox Code Playgroud)

无论如何,这将适用于MySQL,如果您的数据库使用不同的语法来指定主键,请将其替换为:options => 'PRIMARY KEY'任何内容.


use*_*650 0

是否有原因无法使用 Rails 的 id 键并手动添加名为 Seat 的索引?

我见过一些黑客只是为了让 Rails 在非增量 pk 数据库上工作。我不认为这是一个选择。如果我记得的话,这就是 Rails 访问其所有每行功能的方式。

老实说,您是否需要在忽略轨道结构的情况下稍微提高效率?

我认为真正的答案是“你不能”。Activerecord 有一些它不会屈服的东西。