2014-04-05 57 views
17

我是Rails的新手。我正在研究一個小Rails4項目,試圖提高我的技能。 我鬆散地跟在M.Hartl's tutorial之後。在Rails中使用Devise時,我需要「用戶」控制器嗎?

根據本教程構建定製用戶認證。 但是我想使用Devise進行用戶認證。 我是否仍需要像本教程中的用戶控制器? 在哪些情況下,我應該在使用Devise時使用/不使用Users控制器?

關於本教程,我是跳過控制器生成部分,還是必須將動作映射到Devise?

+0

如果你想執行一些定製,那麼你應該創建'用戶控制器'。 因爲它取決於您的要求? 首先你應該知道我們爲什麼要創建新的控制器? –

+0

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

+1

我偶然發現了這個我的舊問題,我以爲我會鏈接到一篇博客文章幫助我更好地理解一些事情。這裏http://www.korenlc.com/rails-tutorial-authentication-with-devise/ – imarg

回答

38

如果您想要與正常註冊/更新過程分開管理用戶,則只需要用戶控制器。我有一個用戶控制器,以便管理員可以獨立於正常的設計註冊/更新過程管理(創建,編輯,更新,刪除)用戶。

與設計的衝突可能是因爲您的路線文件中有devise_for :users …來設置設計,並且您的UsersController也有resources :users。這意味着設計和你的UsersController將試圖分享一些相同的/users路線。您需要通過更改其中一個映射到的路徑將它們分開。例如,您可以將:path => 'u'添加到devise_for語句中,以便將設計路線映射到/u,並且不會與/users上的UsersController衝突。或者,您可以將devise_for單獨留下(因此仍然使用/users),而將您的UsersController路由更改爲例如resources :users_admin, :controller => 'users',這會將您的UsersControllers路由移至映射到/users_admin。請注意,這會將路徑幫助程序從例如users_path更改爲users_admin_path

UPDATE

追隨你的意見/編輯,我有一個快速瀏覽一下教程,我認爲就是圖謀基本上是給你的用戶相關的功能等效的功能是從5.4發展到約9.1或9.2節。 (加上一些額外的東西,例如,電子郵件確認,密碼重置,賬戶鎖定等)。但是,這並不意味着它可以替代該功能,如果您想嘗試將Devise與該教程合併。有些東西看起來像是可以工作的(例如Devise也定義了一個current_user方法),但是路由等是不同的,並且設計將事物分解成更多的控制器(單獨的控制器用於註冊,登錄/註銷,密碼重置...)。管理類型的功能(如2.2,9.3,9.4節 - 創建/編輯/刪除/列出其他用戶)是我在應用程序中添加了單獨的UsersController。 Devise沒有定義一個UsersController,但是如果你沒有如上所述的devise_for :users沒有路徑的話,會使用users路由。

所以,更具體:

  1. 如果要啓用管理型功能,允許查看/編輯/刪除所有的用戶你只需要一個UsersController。
  2. 如果你想在教程中使用設計,它可能需要一些工作來按摩事物以適應,更改頁面上的幫助器鏈接等。對不起,我沒有更具體的;我沒有完成那個教程。

你會錯過一些額外的理解,這些理解來自你自己手動完成所有工作,但是設計是一個很受歡迎的引擎,所以很好理解。如果你有時間,你可以完全完成教程,然後再用設計!它會幫助你理解設計在幕後做的一些東西。 P.S:即使你不能立即理解,也可以看看設計源代碼。

+0

感謝您的回答。它幫助我理解了一些東西,但對我沒有多大幫助(因爲沒有錯誤)。我現在意識到我的問題非常模糊,我沒有給出足夠的背景,所以我編輯了它。也許你會再看一次? – imarg

+0

感謝@Tim - 所以我只想改變設計控制器中的參數 - 任何想法如何去實際創建設計控制器而不重新發明輪子? – BKSpurgeon

相關問題