[英]Customizing Devise gem (Rails)
我正在嘗試以注冊表格的形式添加新字段“注冊碼”以及電子郵件/密碼。 (我在單獨的數據庫中有注冊碼字段,只有有效的注冊碼/電子郵件對才可以進行注冊)
我無法找到由devise gem完成的動作的任何控制器。
我如何定制設計來實現這一目標?
提前致謝。
看來您的問題基本上與Devise本身無關(除了視圖之外)。 要驗證您的注冊碼/電子郵件對,您肯定需要添加它作為驗證。
驗證注冊碼的簡單方法是:
class User
validate :validate_registration_code
private
def validate_registration_code
reg_code = RegistrationCode.find_by_code(registration_code)
unless reg_code.email == record.email
errors.add(:registration_code, "Invalid registration code for #{record.email}")
end
end
end
您可能還想編寫簡單的自定義驗證器:
class RegistrationCodeValidator < ActiveModel::Validator
def validate(record)
# actual reg code validation
# might look like:
reg_code = RegistrationCode.find_by_code(record.registration_code)
unless reg_code.email == record.email
record.errors[:registration_code] << "Invalid registration code for #{record.email}"
end
end
end
# in your User model
class User
# include registration code validator
include RegistrationCodeValidator
validates_with MyValidator
end
Devise將其控制器保留在gem的幕后。 如果要添加或修改動作,則必須將其子類化,並在路由中做一些工作才能將動作發送到控制器。
但是,您不需要這樣做就可以添加字段。 查看goshakkk的答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.