501 Stimmen

Wie mache ich eine Spalte eindeutig und indiziere sie in einer Ruby on Rails-Migration?

Ich würde gerne eine Kolumne erstellen unique in Ruby on Rails-Migrationsskript. Was ist der beste Weg, es zu tun? Gibt es auch eine Möglichkeit, eine Spalte in einer Tabelle zu indizieren?

Ich möchte Folgendes durchsetzen unique Spalten in einer Datenbank zu verwenden, anstatt nur :validate_uniqueness_of .

1voto

Swaps Punkte 1330

Sie sollten einen Namen für den eindeutigen Schlüssel hinzufügen, da der standardmäßige unique_key-Name von Rails oft zu lang sein kann, wodurch die DB einen Fehler auslösen kann.

Um einen Namen für Ihren Index hinzuzufügen, verwenden Sie einfach die name: Option. Die Migrationsabfrage könnte etwa so aussehen -

add_index :table_name, [:column_name_a, :column_name_b, ... :column_name_n], unique: true, name: 'my_custom_index_name'

Mehr Informationen - http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_index

1voto

murali Punkte 11
add_index :table_name, :column_name, unique: true

Um mehrere Spalten gemeinsam zu indizieren, übergeben Sie ein Array von Spaltennamen anstelle eines einzelnen Spaltennamens.

-1voto

Ravistm Punkte 1965

Wenn Sie es versäumt haben, der DB-Spalte Unique hinzuzufügen, fügen Sie einfach diese Validierung im Modell hinzu, um zu prüfen, ob das Feld eindeutig ist:

class Person < ActiveRecord::Base
  validates_uniqueness_of :user_name
end

siehe hier Die obigen Angaben dienen nur zu Testzwecken, bitte fügen Sie Index durch Änderung der DB-Spalte, wie von @Nate vorgeschlagen

Bitte beachten Sie dies mit Index für weitere Informationen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X