Estou usando o Devise em um aplicativo Rails 3, mas nesse caso, um usuário deve ser criado por um usuário existente, que determina quais permissões ele terá.
Por isso, eu quero:
- Para remover a rota para os usuários se inscreverem .
- Para permitir que os usuários editem seus perfis (altere o endereço de e-mail e a senha) depois de se inscreverem
Como posso fazer isso?
Atualmente, estou removendo efetivamente essa rota colocando o seguinte antes devise_for :users
:
match 'users/sign_up' => redirect('/404.html')
Isso funciona, mas imagino que há uma maneira melhor, certo?
Atualizar
Como Benoit Garret disse, a melhor solução no meu caso é pular a criação das rotas de registros em massa e apenas criar as que eu realmente quero.
Para fazer isso, executei primeiro rake routes
e depois usei a saída para recriar as que eu queria. O resultado final foi o seguinte:
devise_for :users, :skip => [:registrations]
as :user do
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users' => 'devise/registrations#update', :as => 'user_registration'
end
Observe que:
- Eu ainda tenho
:registerable
no meuUser
modelo devise/registrations
lida com a atualização de email e senha- A atualização de outros atributos do usuário - permissões, etc. - é tratada por um controlador diferente
Resposta real:
Remova a rota para os caminhos padrão do Devise; ou seja:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Veja minha resposta abaixo.