我有这样的数据库迁移:
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'
任何内容.
是否有原因无法使用 Rails 的 id 键并手动添加名为 Seat 的索引?
我见过一些黑客只是为了让 Rails 在非增量 pk 数据库上工作。我不认为这是一个选择。如果我记得的话,这就是 Rails 访问其所有每行功能的方式。
老实说,您是否需要在忽略轨道结构的情况下稍微提高效率?
我认为真正的答案是“你不能”。Activerecord 有一些它不会屈服的东西。
归档时间: |
|
查看次数: |
12832 次 |
最近记录: |