2014-04-05 17 views
17

Jestem nowicjuszem Rails. Pracuję nad małym projektem Rails4, próbując poprawić swoje umiejętności. Luźno podążam za M.Hartl's tutorial.Czy potrzebuję kontrolera "Użytkownicy" podczas korzystania z Devise in Rails

Zgodnie z samouczkiem zbudowano niestandardowe uwierzytelnianie użytkownika. Chciałbym jednak użyć Devise do uwierzytelnienia użytkownika. Czy nadal muszę mieć kontroler użytkowników, jak w samouczku? W jakich przypadkach powinienem używać/nie używać kontrolera Użytkownicy, gdy już korzystam z Devise?

Jeśli chodzi o samouczek, czy po prostu pomijam część generującą kontroler, czy też muszę odwzorować akcje na Devise?

+0

Jeśli chcesz wykonać jakieś dostosowanie, powinieneś utworzyć "kontroler użytkowników". Bo do twoich wymagań? Pierwszą rzeczą, którą powinieneś wiedzieć, dlaczego tworzymy nowy kontroler? –

+0

http://stackoverflow.com/questions/21904701/ruby-on-rails-4-what-authentication-gem-to-use/21907080#21907080 –

+1

Natknąłem się na to moje starsze pytanie i pomyślałem, że mogę połączyć na blogu, który pomógł mi lepiej zrozumieć kilka rzeczy. Tutaj http://www.korenlc.com/rails-tutorial-authentication-with-devise/ – imarg

Odpowiedz

38

Potrzebujesz tylko kontrolera użytkowników, jeśli chcesz zarządzać użytkownikami oddzielnie od normalnego procesu rejestracji/aktualizacji. Mam kontroler użytkowników, aby administratorzy mogli zarządzać (tworzyć, edytować, aktualizować, usuwać) użytkowników niezależnie od normalnego procesu tworzenia/aktualizacji rejestru.

Konflikt z opracowaniem jest prawdopodobnie dlatego, że masz devise_for :users … w pliku tras, aby skonfigurować programowanie, a także masz resources :users dla swojego kontrolera UsersController. Oznacza to, że devise i Twój ControllerController będą próbować udostępniać niektóre z tych samych tras /users. Musisz je rozdzielić, zmieniając ścieżkę, do której jest przypisany jeden z nich. Możesz dodać, na przykład, :path => 'u' do swojej instrukcji devise_for, aby trasy były mapowane na /u i nie będą w konflikcie z Twoim kontrolerem Users na /users. Ewentualnie możesz pozostawić sam plik devise_for (dlatego nadal używasz /users) i zamiast tego zmienić routing UsersController na, na przykład, resources :users_admin, :controller => 'users', który przenosi trasy Twoich użytkowników, które mają być mapowane na /users_admin. Zauważ, że to zmieniłoby ścieżkę pomocników z, na przykład, users_path na users_admin_path.

UPDATE

obserwuję Twój komentarz/edit, miałem okiem na kursie i myślę, że Devise zasadzie daje równoważną funkcjonalność funkcjonalności związanych użytkownika, który został opracowany z pkt 5.4 do około sekcji 9.1 lub 9.2. (plus dodatkowe rzeczy, na przykład potwierdzenie wiadomości e-mail, resetowanie hasła, blokowanie konta itp.). Jednak nie oznacza to, że jest to zastępcza zamiennik dla tej funkcji, jeśli chcesz spróbować połączyć Devise z tym samouczkiem. Są pewne rzeczy, które wyglądają, jakby działały (np. Devise definiuje również metodę current_user), ale trasy itd. Byłyby inne, a programowanie dzieliłoby się na więcej kontrolerów (oddzielne kontrolery do rejestracji, logowania/wylogowywania, resetowania hasła ...). Funkcjonalność typu administratora (podobnie jak w sekcjach 2.2, 9.3, 9.4 - tworzenie/edycja/usuwanie/lista innych użytkowników) jest tym, co dodałem w aplikacji osobnego kontrolera UsersController. Program Devise nie definiuje kontrolera UsersController, ale korzysta z tras users, jeśli wykonasz devise_for :users bez ścieżki, o czym wspomniałem powyżej.

Tak, a dokładniej:

  1. będzie potrzebował UsersController tylko jeśli chcesz włączyć funkcję administratora typu pozwalając podglądu/edycji/usuwania wszystkich użytkowników.
  2. Jeśli chciałbyś użyć programu devise w samouczku, prawdopodobnie potrzebowałbyś trochę pracy, żeby dopasować rzeczy do siebie, zmieniając linki pomocników na stronach itp. Niestety nie jestem bardziej konkretny; Nie zrobiłem tego samouczka.

Będziesz tracić dodatkowe zrozumienie, które wynika z robienia tego ręcznie samodzielnie, ale wymyślić jest popularny silnik, więc dobrze jest wiedzieć, jak również. Jeśli masz czas, możesz zrobić samouczek w całości, a następnie ponownie z pomocą! Pomoże ci zrozumieć, że niektóre z rzeczy, które wymyślają, robią za kulisami. P.S: To może być pouczające patrzeć na kod źródłowy, nawet jeśli nie rozumiesz go od razu.

+0

Dzięki za odpowiedź. Pomogło mi to zrozumieć kilka rzeczy, ale nie pomaga mi to zbytnio (bez twojej winy). Teraz zdaję sobie sprawę, że moje pytanie było bardzo niejasne i nie dawałem wystarczająco dużo kontekstu, więc je zredagowałem. Może spojrzysz jeszcze raz? – imarg

+0

dzięki @Tim - więc chcę tylko zmienić parametry w kontrolerze devisie - jakikolwiek pomysł na to, jak właściwie stworzyć kontroler devise bez ponownego odkrywania koła? – BKSpurgeon

Powiązane problemy