2012-05-31 61 views
0

我試圖在註冊表單中添加一個新字段「註冊碼」以及電子郵件/密碼。 (我在註冊碼字段在一個單獨的數據庫中,只有有效的註冊碼/電子郵件對將不得不使用註冊)自定義設計寶石(Rails)

我無法找到任何控制器由設計寶石完成的操作。

我如何定製設計來實現這一目標?

在此先感謝。

回答

1

看來你的問題基本上與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 
+0

謝謝Goshakkk ..它的工作原理就像那樣.. 我也學會了使用這種模式的方式.. 再次感謝.. !!! – Alan

+0

沒問題:)很高興我的回答有幫助。 –

0

制定保持它的背後寶石裏面的場景控制器。如果你想添加一個動作或者修改一個動作,你必須對它進行子類化並在路徑上做一些工作,以便將動作傳遞給你的控制器。

但是,您不應該需要這樣做才能添加字段。看goshakkk的回答