Rails在数据库级别创建唯一列是否需要它成为索引

时间:2015-04-10 18:55:05

标签: ruby-on-rails

如果我想在数据库级别创建一个唯一的表列,这是否需要此列也成为索引?

我有一个名为username的列,我希望它是唯一的,但它不需要是索引(登录是基于电子邮件地址完成的,这已经是索引)。

所以在模型级别我添加了:

validates :username, presence: true,
                     length: { maximum: 15 },
                     uniqueness: { case_sensitive: false }

但是我应该在迁移文件中做什么? 我知道我可以添加到迁移文件中:

add_index :users, :username, unique: true

但这会使用户名也成为一个索引,我并不是真的需要(我假设只会让应用程序更慢)。

我正在使用SQLite进行开发(遵循Hartl的教程,但是根据我自己的应用程序调整说明)。 可能要使它成为一个独特的要求它是一个索引,但我想确定。我希望这是因为在http://api.rubyonrails.org/classes/ActiveRecord/Migration.html'unique'只存在add_index方法。

1 个答案:

答案 0 :(得分:0)

这是您在数据库中创建唯一列的方法,您可以将其作为唯一索引。这就是在dbs中实现唯一性的方式。它被放入索引中,以便快速验证其唯一性。你做对了。