Ric*_*men 13 ruby-on-rails rails-activerecord
即使我的应用程序不允许用户键入某个位置,我也希望在数据库中强制执行城市的唯一性.由于我的Rails应用程序将在city列上搜索,我想在city列上添加一个索引,但是想知道是否重要的是添加唯一:true也在索引上.这是重复吗?如果这没有意义,如果你能解释原因,我将非常感激.
class CreateLocations < ActiveRecord::Migration
def change
create_table :locations do |t|
t.string :city, unique: true
t.string :state
t.timestamps
end
add_index :locations, :city, unique: true
end
end
Run Code Online (Sandbox Code Playgroud)
小智 30
使用Rails 4,您可以提供:index param hash参数
class CreateLocations < ActiveRecord::Migration
def change
create_table :locations do |t|
t.string :city, index: {unique: true}
t.string :state
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
Jiř*_*šil 11
据我所知,实际上不支持块中的unique选项create_table并且不执行任何操作,请参阅TableDefinition.要创建唯一索引,您需要按照add_index现在的方式调用该方法.请注意,唯一索引既用于唯一性又用于搜索等,不需要在同一列上添加两个索引.
添加:index: { unique: true }
例子:
class AddUsernameToUsers < ActiveRecord::Migration[6.1]
def change
add_column :users, :username, :string, null: false, index: { unique: true }
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9804 次 |
| 最近记录: |