2010-05-21 65 views
0

我正在構建一個RoR 3應用程序社區。它有一個用戶模型和一些字段。驗證RoR中某些字段更改的密碼

因此,當用戶更新某個字段時,如他/她的生日,我想驗證用戶輸入的密碼與數據庫中相同。這樣我就知道這是正確的用戶試圖改變生日。

所以我問你,我可以如何創建這樣一個驗證器。

此外我想能夠指定用戶必須驗證密碼更改哪些字段的數組。

回答

1

一旦你熟悉Rails框架,這實際上很容易做到。

型號/ User.rb
class User < ActiveRecord::Base 
    validate :correct_password?, :if => :check_password? 

    def check_password? 
    [birthday_changed?, other_field_changed?].any? 
    end 

    def correct_password? 
    # without knowing more about how you store the password 
    # this probably won't work with your code directly 
    errors.add_to_base("Must provide password") unless password? 
    errors.add_to_base("Incorrect password") unless password == User.find_by_id(id).password 
    end 
end 
+0

這是偉大的!謝謝! – Lisinge 2010-05-21 21:35:55

0

即使構建用戶身份驗證和授權並不困難 - 我會建議使用類似「AuthLogic」或「Devise」的gem/plugins,它很可能涵蓋您需要的90%功能。如果需要,您也可以自定義/添加新功能。

這樣的插件將爲你做大部分的工作:生成MVC,創建數據庫,做適當的安全檢查,甚至電子郵件密碼恢復等。

+0

位我希望做我自己:) – Lisinge 2010-05-21 16:31:21