我对rails很新,我使用authlogic作为我的身份验证系统。我想在用户更新他的个人资料时使用password_confirmation,但在他注册时却没有。
我想出了这个配置选项
acts_as_authentic do |c|
c.require_password_confirmation=false
end
当我这样做时,它会在注册期间忽略password_confirmation(这很好),但在编辑用户配置文件时,我希望它考虑password_confirmation字段。有什么方法可以配置吗?
答案 0 :(得分:1)
当您暂停基于Authlogic的验证时,您可以使用标准的Rails模型验证来实现此目的,例如:
validates_presence_of :password_confirmation, :if => :password_required?
其中password_required?
是一个可选的模型方法,它测试您是否希望对给定方案进行此验证。
<强>更新强>
由于似乎c.require_password_confirmation=false
选项意味着不再自动创建password_confirmation
属性,因此您需要稍微改变解决方案。手动创建虚拟属性,并针对配置文件更新的特定情况进行自定义验证。像这样:
class User < ActiveRecord::Base
attr_accessor :password_confirmation
validate do |user|
unless user.new_record?
user.errors.add :password, "is required" if self.password.blank?
user.errors.add :password_confirmation, "is required" if self.password_confirmation.blank?
user.errors.add_to_base, "Password and confirmation must match" if self.password != self.password_confirmation
end
end
end