2

フラグ->これは初心者の質問です!

Rails移行ファイルでは、列IDを作成することができますprimary_key no auto_increment?

4

2 に答える 2

1

次のchange_columnメソッドを実行して、auto_incrementを削除することに成功しました。

class DropAutoIncrement < ActiveRecord::Migration
  def change
    change_column :my_table, :id, :integer
  end
end

activerecord4.0.2を使用しました。

于 2014-01-27T08:46:46.373 に答える
0

ユキの答えが古すぎたようですね。それは私にはうまくいきませんでした。しかし、以下は機能しました:

class CreateNoAutoincrement < ActiveRecord::Migration[4.2]
  def up
    create_table( :my_table, :id => false ) {|t|
      t.integer :id,    null: false ;
      t.string  :token, null: false ;
    }
    add_index :my_table, :id,    unique: true ;
    add_index :my_table, :token, unique: true ;
  end
  def down
    drop_table :my_table ;
  end
end

MariaDBでは、テーブルは次のようになります。

MariaDB [foo_devel]> describe my_table ;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   | PRI | NULL    |       |
| token | varchar(255) | NO   | UNI | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.001 sec)

2つの一意のインデックスだけでなく主キーを取得できるのは素晴らしいことです(おそらく列名が「id」であるため)

于 2021-10-29T10:22:08.413 に答える