簡體   English   中英

設計為嵌套資源-路線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM