我正在开发一个相当简单的应用程序。其基础是我有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参与,我想我可以在routes.rb中使用一个简单的嵌套资源来实现这一点。类似的东西:
resources :departments do
resources :users
end
使用Devise我尝试过:
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 :(得分:0)
我试图复制你的应用程序,对我来说这很有用。尝试使用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
希望这有帮助,如果有任何问题,请告诉我。