Rails 3.1+迁移中数据库级别的唯一模型字段?

时间:2013-01-25 12:09:40

标签: ruby-on-rails-3 activerecord model unique

有没有办法在Rails 3.1+迁移中的字段上指定数据库级别唯一性约束?我知道ActiveRecord的validates_uniqueness_of会起作用,但我很想知道这是否可以在其他地方指定。

例如,为了指定“登录”字段在迁移中应该是唯一的,例如......

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :login

      t.timestamps
    end
  end
end

...我想添加:unique => true等选项。

Documentation中没有提到任何内容,所以我认为这不是一个很好的地方/方式,但有人知道如何实现这一点(即使它被手动添加到结果模式中)?或者是validates_uniqueness_of首选方式吗?

1 个答案:

答案 0 :(得分:1)

您可以添加唯一索引:

def change
  create_table :users do |t|
    t.string :name
    t.string :login

    t.timestamps
  end

  add_index :users, :login, :unique => true
end