我希望能够更新我的用户信息,而无需在每次编辑任何其他属性时让用户设置密码。
我目前的验证是:
validates :password, presence: true, length: { minimum: 8 }
validates :password_confirm, presence: true
我怎样才能使这个有条件?如果密码和password_confirm属性在params中,那么只需要这些验证就很聪明。我可以使用一些关于如何实现这一点的想法。感谢。
答案 0 :(得分:0)
我认为应该这样做:
validates :password, presence: true, length: { minimum: 8 }
validates :password_confirm, presence: true, :if => Proc.new { |a| a.password_changed? || a.new_record? }
有关_changed?
方法的更多信息,请参阅ActiveModel::Dirty上的文档。每次更改属性时都应该在password
上运行状态验证没有问题,因为这将在数据库中保留,因此它将始终通过(而password_confirm
将不会持久,因此需要条件)