通过迁移创建表的正确方法是什么?主键是字符串而不是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'
之后,这似乎应该有效
答案 0 :(得分:-1)
如果是字符串会有什么不同?请参阅create table doc。
create_table :foos, primary_key: 'baz' do |t|
t.column :baz, :string
end
另请注意,这只是在表中设置主键。您 另外需要在模型中配置主键 self.primary_key =。模型不会自动检测主键 他们的表定义。