更新配置文件而不更新密码

时间:2012-11-18 05:33:47

标签: ruby-on-rails validation params

我希望能够更新我的用户信息,而无需在每次编辑任何其他属性时让用户设置密码。

我目前的验证是:

  validates :password, presence: true, length: { minimum: 8 }
  validates :password_confirm, presence: true

我怎样才能使这个有条件?如果密码和password_confirm属性在params中,那么只需要这些验证就很聪明。我可以使用一些关于如何实现这一点的想法。感谢。

1 个答案:

答案 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将不会持久,因此需要条件)