我正在构建一个RoR 3应用程序,一个社区。它有一个用户模型和一些字段。
因此,当用户更新某个字段(如他/她的生日)时,我想验证用户输入的密码是否与数据库中的密码相同。这样我知道这是正确的用户试图改变生日。
所以我问你如何创建这样的验证器。
此外,我希望能够指定用户必须验证要更改的密码的字段数组。
答案 0 :(得分:1)
一旦熟悉了Rails框架,这实际上很容易做到。
车型/ User.rbclass 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
答案 1 :(得分:0)
即使构建用户身份验证和授权并不难 - 我建议使用类似“AuthLogic”或“Devise”宝石/插件的内容,这些内容很可能会覆盖您需要的90%的功能。如果需要,您可以自定义/添加新功能。
这些插件将为您完成大部分繁重的工作:生成MVC,创建数据库,进行适当的安全检查,甚至电子邮件密码恢复等。