2

主キーがintではなく文字列である移行を介してレールでテーブルを作成する適切な方法は何ですか?

primary_key以下の回答で@oldergodが提案したように設定しようとしましbazたが、静止画に設定されているようですint:

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos, primary_key: 'baz' do |t|
    end
  end
end

アップデート

それ以来試しました

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos, primary_key: false do |t|
      t.string :baz
    end
  end
end

これで少し近づきますが、列の PRIMARY インデックスがまだありません。試してみましadd_index :foos, :baz, type: :primaryたが、これにより次のエラーが生成されます。

SQLite3::SQLException: near "primary": syntax error: CREATE primary INDEX "index_foos_on_baz" ON "foos" ("baz")/Users/kyledecot/.rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize'

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_index_optionsを見た後、これはうまくいくようです

4

1 に答える 1