Już stworzyliśmy model użytkownika na początku projektu, ale teraz (kilka późniejszych migracji) chcielibyśmy użyć gem devisera. Czy możliwe jest dodanie projektu, jeśli model użytkownika i tabela już istnieją? To znaczy, czy można zmienić to, co już zostało zrobione, czy musimy zacząć wszystko od początku?Czy można dodać programowanie, jeśli model użytkownika już istnieje?
Odpowiedz
Zrobiłem to. To trochę uciążliwe, ale Devise jest tego warte. Zrób fałszywą aplikację i wykonuj migrację. Następnie spójrz na schemat schema.rb i napisz kilka migracji, które robią to samo z istniejącym modelem użytkownika.
Alternatywnie możesz przeczytać źródło i dowiedzieć się, gdzie zdefiniowano rzeczy "database_authenticateable". Powinieneś zacząć here.
Cavert Coder, ale:
(Uwaga,
to nie migrować „: zamykane”, bo nie dbają o to, gdy to pisałem
Obejmuje to teraz: zamykane ponieważ MattSlay zależało bardziej niż ja zrobił :). Musisz również przeprowadzić migrację haseł użytkowników do pola zaszyfrowanych haseł. W końcu może nie działać dla ciebie. Niestety)
class AddDevise < ActiveRecord::Migration
def self.up
null = false
default = ""
add_column :users, :encrypted_password, :string, :null => null, :default => default, :limit => 128
add_column :users, :password_salt, :string
add_column :users, :authentication_token, :string
add_column :users, :confirmation_token, :string
add_column :users, :confirmed_at, :datetime
add_column :users, :confirmation_sent_at, :datetime
add_column :users, :reset_password_token, :string
add_column :users, :remember_token, :string
add_column :users, :remember_created_at, :datetime
add_column :users, :sign_in_count, :integer, :default => 0
add_column :users, :current_sign_in_at, :datetime
add_column :users, :last_sign_in_at, :datetime
add_column :users, :current_sign_in_ip, :string
add_column :users, :last_sign_in_ip, :string
#:lockable fields contributed by MattSlay
add_column :users, :failed_attempts, :integer, :default => 0
add_column :users, :unlock_token, :string
add_column :users, :locked_at, :datetime
end
def self.down
remove_column :users, :encrypted_password
remove_column :users, :password_salt
remove_column :users, :authentication_token
remove_column :users, :confirmation_token
remove_column :users, :confirmed_at
remove_column :users, :confirmation_sent_at
remove_column :users, :reset_password_token
remove_column :users, :remember_token
remove_column :users, :remember_created_at
remove_column :users, :sign_in_count
remove_column :users, :current_sign_in_at
remove_column :users, :last_sign_in_at
remove_column :users, :current_sign_in_ip
remove_column :users, :last_sign_in_ip
remove_column :users, :failed_attempts
remove_column :users, :unlock_token
remove_column :users, :locked_at
end
end
Oprócz listy Aquarion przewidzianym, myślę Znalazłem trzy pola, których potrzebujesz, jeśli chcesz, aby wdrożyć. Zamykane opcję w modelu użytkownika:
add_column :users, :failed_attempts, :integer, :default => 0
add_column :users, :unlock_token, :string
add_column :users, :locked_at, :datetime
- 1. Już zarejestrowany w/appname /: Model użytkownika jest już zarejestrowany
- 2. Szkielet: Jak sprawdzić, czy model już istnieje w kolekcji?
- 3. PowerShell Add-Type: Nie można dodać typu. już istnieje
- 4. Sprawdź, czy typ zdefiniowany przez użytkownika już istnieje w PostgreSQL
- 5. Czy plik WebClient.DownloadFileAsync zastępuje plik, jeśli już istnieje na dysku?
- 6. Tworzenie użytkownika Oracle, jeśli jeszcze nie istnieje
- 7. Sprawdzanie, czy login SQL Server już istnieje
- 8. Tworzenie folderu, jeśli nie istnieje - „Obiekt już istnieje”
- 9. Sprawdź, czy zdarzenie już istnieje
- 10. mysql utworzyć użytkownika, jeśli nie istnieje
- 11. Model użytkownika Django Oauth
- 12. Jak sprawdzić, czy identyfikator już istnieje - CodeIgniter
- 13. tylko dodać skrypt do głowy, jeśli nie istnieje
- 14. django.db.utils.ProgrammingError: relacja już istnieje
- 15. Włączyć inną gałąź (utworzyć, jeśli nie istnieje), bez sprawdzania, czy już istnieje?
- 16. sprawdzić, czy dane już istnieje na serwerze w angularjs
- 17. BigQuery - Sprawdź, czy tabela już istnieje
- 18. Siła django-admin startproject jeśli folderu projekt już istnieje
- 19. Jak mogę uczynić Django-Tastypie nadpisać zasób, jeśli już istnieje?
- 20. jak utworzyć plik i wyrzucić wyjątek, jeśli już istnieje
- 21. Automatycznie zmieniaj nazwę pliku, jeśli już istnieje w systemie Windows
- 22. Wznowienie Aktywny zamiast Zaczynając jeśli już istnieje w tylnej stosu
- 23. Codeigniter: jak mogę sprawdzić, czy model jest już załadowany?
- 24. Jeśli mam już ACCESS_FINE_LOCATION, czy mogę pominąć ACCESS_COARSE_LOCATION?
- 25. SimpleXML - "Węzeł już nie istnieje"
- 26. Sprawdź, czy kolumna już istnieje, a jeśli nie, zmień tabelę w sqlite
- 27. Wicket: Powiadom, jeśli model strony został zmieniony
- 28. Ruby on Rails: Jak sprawdzić, czy model istnieje
- 29. Jeśli istnieje lub istnieje?
- 30. Czy istnieje sposób sprawdzenia, czy alarm jest już ustawiony?
Pracował dla mnie! O czym jest ta część: blokowanie? Patrzę na migrację Devise User i widzę tylko te pola, które wymieniłeś. Gdzie mogę dowiedzieć się więcej na ten temat: Zamykane rzeczy? Chciałbym wdrożyć pełny schemat Devise User. – MattSlay
Ahh, myślę, że znalazłem wymagane: zamykane pola. Wysłałem je w osobnej odpowiedzi poniżej. – MattSlay
Ach, fajnie. Zintegrowaliśmy to z jednym dużym plikiem schematu powyżej. Dziękuję Ci. – Aquarion