Saya menggunakan Devise dalam aplikasi Rails 3, tetapi dalam hal ini, pengguna harus dibuat oleh pengguna yang ada, yang menentukan izin apa yang akan ia miliki.
Karena itu, saya ingin:
- Untuk menghapus rute bagi pengguna untuk mendaftar .
- Agar pengguna tetap dapat mengedit profil mereka (mengubah alamat email dan kata sandi) setelah mereka mendaftar
Bagaimana saya bisa melakukan ini?
Saat ini, saya secara efektif menghapus rute ini dengan menempatkan yang berikut sebelumnya devise_for :users
:
match 'users/sign_up' => redirect('/404.html')
Itu berhasil, tapi saya membayangkan ada cara yang lebih baik, bukan?
Memperbarui
Seperti yang dikatakan Benoit Garret, solusi terbaik dalam kasus saya adalah tidak membuat rute registrasi secara massal dan hanya membuat yang saya inginkan.
Untuk melakukan itu, saya pertama berlari rake routes
, kemudian menggunakan output untuk membuat kembali yang saya inginkan. Hasil akhirnya adalah ini:
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
Perhatikan bahwa:
- Saya masih memiliki model
:registerable
sayaUser
devise/registrations
menangani pembaruan email dan kata sandi- Memperbarui atribut pengguna lain - izin, dll - ditangani oleh pengontrol yang berbeda
Jawaban aktual:
Hapus rute untuk jalur Rencanakan default; yaitu:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Lihat jawaban saya di bawah ini.