2013-06-06 3 views
1

상당히 간단한 앱으로 작업하고 있습니다. 그 중 하나는 부서 (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가 참여하지 않고서는 내 routes.rb의 간단한 중첩 된 리소스로이를 수행 할 수 있다고 생각합니다. 내가 시도 고안를 사용

resources :departments do 
    resources :users 
end 

:처럼 뭔가 내가 잘못된 길을 향하고하고 쉬운 방법은 아마이 있다고 할 생각합니다, 그래서 이것은 라우팅 많은 오류를 생성

resources :departments do 
    devise_for :users, :path => '' 
end 

. 레일에 상당히 새롭기 때문에 누군가가 올바른 해결책을 제시 할 수 있기를 바랍니다.

내 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 

답변

0

I 앱을 복제하기 위해 노력하고 날 위해 일했다. 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 

호프가 도움이되었는데 문제가 있으면 알려주세요.