Ответ 1
Следующий пример:
devise_for :users, :path => 'accounts'
resources :users do
resources :orders
end
Вышеизложенное означает, что путь аутентификации будет "/accounts/sign_in"
, "/accounts_sign_up"
и т.д. Некоторые могут не знать, что важно признать, что devise_for :users
не соответствует на самом деле UsersController
и модели. Это даже не маршрут ресурса, хотя многие верят, что это похоже. Вот почему мы не можем относиться к нему так:
devise_for :users do
resources: somereosouce
end
Все devise_for
действительно отображает следующие маршруты:
# Session routes for Authenticatable (default)
new_user_session GET /users/sign_in {:controller=>"devise/sessions", :action=>"new"}
user_session POST /users/sign_in {:controller=>"devise/sessions", :action=>"create"}
destroy_user_session GET /users/sign_out {:controller=>"devise/sessions", :action=>"destroy"}
# Password routes for Recoverable, if User model has :recoverable configured
new_user_password GET /users/password/new(.:format) {:controller=>"devise/passwords", :action=>"new"}
edit_user_password GET /users/password/edit(.:format) {:controller=>"devise/passwords", :action=>"edit"}
user_password PUT /users/password(.:format) {:controller=>"devise/passwords", :action=>"update"}
POST /users/password(.:format) {:controller=>"devise/passwords", :action=>"create"}
# Confirmation routes for Confirmable, if User model has :confirmable configured
new_user_confirmation GET /users/confirmation/new(.:format) {:controller=>"devise/confirmations", :action=>"new"}
user_confirmation GET /users/confirmation(.:format) {:controller=>"devise/confirmations", :action=>"show"}
POST /users/confirmation(.:format) {:controller=>"devise/confirmations", :action=>"create"}
Итак, говоря, что вы можете сделать следующее, но будут иметь некоторые конфликты:
devise_for :users
resource :users do
resource :foo_object
end
Немного о вложенных ресурсах, если у вас есть что-то вроде следующего:
class Users < ActiveRecord::Base
has_many :foo_object
end
class FooObject < ActiveRecord::Base
belongs_to :users
end
Тогда ваш вложенный ресурс будет
resource :users do
resource :foo_object
end
Надеюсь, это прояснит ситуацию. Также вы можете захотеть прочитать Вложенный ресурс с помощью Devise - Rails3