[英]Devise as a nested resource - Routes
我正在開發一個相當簡單的應用程序。 其基礎是我有2個模型,一個模型用於部門(下面是department.rb),另一個模型是用戶(下面是user.rb)。 部門有很多用戶,用戶屬於部門。
我正在使用Devise(3.0.0.rc&Rails 4.0.0.rc1)進行用戶身份驗證,並進行了遷移以將Department_id作為外鍵添加到用戶模型。
我在獲取對用戶來說似乎合乎邏輯的路由時遇到了問題,這些用戶將轉到其部門的主頁,並可以選擇從該頁面注冊或登錄。 類似於www.example.com/departments/department:id/sign_in
如果沒有Devise的參與,我想我可以在route.rb中使用一個簡單的嵌套資源來實現。 就像是:
resources :departments do
resources :users
end
我嘗試使用Devise:
resources :departments do
devise_for :users, :path => ''
end
這會產生很多路由錯誤,因此我認為我必須走錯路,而且可能有一種更簡單的方法。 剛接觸Rails時,我希望有人可以指出正確的方向,以尋求更好的解決方案。
我的user.rb模型:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
belongs_to :department
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :department_id, presence: true
end
我的department.rb模型是:
class Department < ActiveRecord::Base
has_many :users
.... All my validation rules
end
我嘗試復制您的應用程序,對我來說,這可行。 嘗試玩devise_scope ...
#routes.rb
resources :departments
devise_for :users
devise_scope :user do
get 'departments/:department_id/sign_in' => 'devise/sessions#new', :as => :department_user_sign_in
end
希望這會有所幫助,讓我知道是否有任何問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.