0

Rails 3.1以降の移行でフィールドにデータベースレベルの一意性制約を指定する方法はありますか?ActiveRecordvalidates_uniqueness_ofが機能することは知っていますが、これを他の場所で指定できるかどうか知りたいです。

たとえば、「login」フィールドが...などの移行で一意である必要があることを指定するには、

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 に答える