Załóżmy, że utworzyłem tabelę table
w aplikacji Rails. Jakiś czas później dodaję kolumnę działającą:
rails generate migration AddUser_idColumnToTable user_id:string.
Wtedy zdaję sobie sprawę, że muszę dodać user_id
jako indeks. Wiem o tej add_index
metodzie, ale gdzie należy ją wywołać? Czy mam uruchomić migrację (jeśli tak, którą?), A następnie ręcznie dodać tę metodę?
ruby-on-rails
indexing
migration
user1611830
źródło
źródło
:table
jest rzeczywista nazwa tabeli, więc w przypadkuusers
tabeli, można zastąpić:users
przez:table
.Jeśli chcesz utworzyć
user_id
tabelę, rozsądne byłoby założenie, że odwołujesz się do tabeli użytkownika. W takim przypadku migracja będzie:To polecenie wygeneruje następującą migrację:
Po uruchomieniu
rake db:migrate
zarównouser_id
kolumna, jak i indeks zostaną dodane doproducts
tabeli.W przypadku wystarczy dodać indeks do istniejącej kolumny, na przykład
name
zuser
tabeli, następujące techniki mogą być pomocne:rails generate migration AddIndexToUsers name:string:index
wygeneruje następującą migrację:Usuń
add_column
linię i uruchom migrację.W opisanym przypadku można było wydać
rails generate migration AddIndexIdToTable index_id:integer:index
polecenie, a następnie usunąćadd_column
wiersz z wygenerowanej migracji. Ale wolałbym raczej cofnąć początkową migrację i zamiast tego dodać odwołanie:źródło
Dodaj w wygenerowanej migracji po utworzeniu kolumny następujący (przykład)
źródło
Aby uzyskać referencje, możesz zadzwonić
Jeśli w przyszłości będziesz musiał dodać indeks ogólny, możesz go uruchomić
Wygeneruj kod:
źródło
Możesz tego użyć, pomyśl tylko, że Job to nazwa modelu, do którego dodajesz indeks cader_id :
źródło