ฉันกำลังใช้ Devise ในแอป Rails 3 แต่ในกรณีนี้ผู้ใช้จะต้องสร้างขึ้นโดยผู้ใช้ปัจจุบันซึ่งเป็นผู้กำหนดสิทธิ์ที่ตนจะมี
ด้วยเหตุนี้ฉันต้องการ:
- การลบเส้นทางสำหรับผู้ใช้ในการลงทะเบียน
- ที่จะยังคงให้ผู้ใช้สามารถแก้ไขโปรไฟล์ของพวกเขา (เปลี่ยนที่อยู่อีเมลและรหัสผ่าน) หลังจากที่พวกเขาได้ลงทะเบียน
ฉันจะทำสิ่งนี้ได้อย่างไร
ขณะนี้ฉันกำลังลบเส้นทางนี้อย่างมีประสิทธิภาพโดยวางสิ่งต่อไปนี้ก่อนหน้าdevise_for :users
:
match 'users/sign_up' => redirect('/404.html')
ใช้งานได้ แต่ฉันคิดว่ามีวิธีที่ดีกว่าใช่มั้ย
ปรับปรุง
ดังที่เบอนัวต์การ์เรตกล่าวว่าทางออกที่ดีที่สุดในกรณีของฉันคือการข้ามการสร้างเส้นทางการลงทะเบียนและเพียงแค่สร้างสิ่งที่ฉันต้องการจริงๆ
ในการทำเช่นนั้นฉันวิ่งครั้งแรกrake routes
จากนั้นใช้ผลลัพธ์เพื่อสร้างสิ่งที่ฉันต้องการอีกครั้ง ผลลัพธ์ที่ได้คือ:
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
โปรดทราบว่า:
- ฉันยังมี
:registerable
ในUser
แบบจำลองของฉัน devise/registrations
จัดการการอัปเดตอีเมลและรหัสผ่าน- การอัปเดตแอททริบิวผู้ใช้อื่น ๆ - การอนุญาต ฯลฯ ถูกจัดการโดยคอนโทรลเลอร์อื่น
คำตอบจริง:
ลบเส้นทางสำหรับเส้นทาง Devise ที่เป็นค่าเริ่มต้น เช่น:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
เช่น ดูคำตอบของฉันด้านล่าง