2016-05-10 41 views
3

這個問題可能不那麼複雜,但我很迷惑。我有兩個用戶,即學生和老師,對於那些我想要單獨的模型,控制器和視圖。我希望老師使用/t/sign_up和學生/s/sign_up。我正在使用設計進行身份驗證,我知道這是可能的,因爲這是管理員工作的有效方式。使用多個模型的設計

回答

2

只要你已經生成了多個模型和視圖與色器件,只是想改變路徑名,你可以這樣做配置的config/routes.rb文件:

devise_for :students, path: 's' 
devise_for :teachers, path: 't' 

將取代你這樣的路線:

http://localhost:3000/s/sign_up 
http://localhost:3000/t/sign_up 

如果你要根據不同的車型有你的觀點,你可以配置config.scoped_views = trueconfig/initializers/devise.rb文件,並生成視圖該型號:

rails g devise:views students

如果你想自定義每個控制器,可以生成自己的控制文件是這樣的:

rails generate devise:controllers students

這將基於模型的名稱創建控制器,從而可以在定義它們您的路線:

devise_for :students, path: 's', controllers: { sessions: "students/sessions" }

+0

感謝您的回覆。我試過這個,它給了我兩種路由'/ s/sign_up'指'devise/registrations#new',第二個'/ t/sign_up'也指'devise/registrations#new'。它不會造成衝突嗎?如何設計知道在'/ s /'創建新'student'並在'/ t /'創建一個新的教師實例? – user464

+0

很容易,如果您需要不同的控制器行爲,您可以專門爲該模型創建控制器。我將編輯答案。 – pyfl88

+0

謝謝,我爲他們的目錄中的學生和教師生成了單獨的控制器,即'controllers/student/devise'和'controllers/teacher/devise'還爲設計和生成的視圖配置了路由和'初始化器'。現在devise正在使用我的控制器,但仍然沒有使用由devise生成的視圖,例如'rails g devise:views student/devise'和'rails g devise:views teacher/devise'。 – user464