Ruby on rails 如何在RubyonRails迁移中实现唯一性?
基于 考虑到以下迁移:Ruby on rails 如何在RubyonRails迁移中实现唯一性?,ruby-on-rails,ruby,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3.2,基于 考虑到以下迁移: class CreateVacations < ActiveRecord::Migration def change create_table :vacations do |t| t.string :name t.string :slug, :uniqueness => true t.datetime :starts_at t.datetime :ends_at t.timestamps
class CreateVacations < ActiveRecord::Migration
def change
create_table :vacations do |t|
t.string :name
t.string :slug, :uniqueness => true
t.datetime :starts_at
t.datetime :ends_at
t.timestamps
end
end
end
我不认为“slug”有任何唯一性要求。如果我做错了,我怎么能在这一点上修复它
如果它是正确的,为什么模式不说它是唯一的?谢谢您需要创建一个索引,以便在数据库级别强制执行唯一性:
add_index :vacations, :slug, unique: true
如果我改变旧的迁移并运行db:migrate,它会崩溃吗?我应该把索引放在哪里?在迁移文件中?如果尚未签入到代码存储库的迁移,则只需运行
rake db:rollback
,编辑迁移(添加该行),然后再次执行rake db:migrate
。否则,只需为索引创建另一个迁移
add_index :vacations, :slug, unique: true