我試圖在註冊表單中添加一個新字段「註冊碼」以及電子郵件/密碼。 (我在註冊碼字段在一個單獨的數據庫中,只有有效的註冊碼/電子郵件對將不得不使用註冊)自定義設計寶石(Rails)
我無法找到任何控制器由設計寶石完成的操作。
我如何定製設計來實現這一目標?
在此先感謝。
我試圖在註冊表單中添加一個新字段「註冊碼」以及電子郵件/密碼。 (我在註冊碼字段在一個單獨的數據庫中,只有有效的註冊碼/電子郵件對將不得不使用註冊)自定義設計寶石(Rails)
我無法找到任何控制器由設計寶石完成的操作。
我如何定製設計來實現這一目標?
在此先感謝。
看來你的問題基本上與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
制定保持它的背後寶石裏面的場景控制器。如果你想添加一個動作或者修改一個動作,你必須對它進行子類化並在路徑上做一些工作,以便將動作傳遞給你的控制器。
但是,您不應該需要這樣做才能添加字段。看goshakkk的回答
謝謝Goshakkk ..它的工作原理就像那樣.. 我也學會了使用這種模式的方式.. 再次感謝.. !!! – Alan
沒問題:)很高興我的回答有幫助。 –