0

有没有办法在 Rails 3.1+ 迁移中的字段上指定数据库级别的唯一性约束?我知道 ActiveRecordvalidates_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.

文档中没有提到任何内容,所以我认为这不是一个好地方/做事的方式,但是有谁知道如何实现这一点(即使它是手动添加到生成的架构中的)?还是 validates_uniqueness_of 是首选方式?

4

1 回答 1

1

您可以添加唯一索引,以便:

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

    t.timestamps
  end

  add_index :users, :login, :unique => true
end
于 2013-01-25T12:18:28.410 回答