【问题标题】:Updating profile without updating password在不更新密码的情况下更新个人资料
【发布时间】:2012-11-06 10:17:56
【问题描述】:

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

我目前的验证是:

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

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

【问题讨论】:

  • 如果我对您的理解正确,您只想验证password_confirm 如果password 已更改,对吗?当用户编辑另一个属性时,您确认密码是否存在并不重要,因为密码将存在于记录中(与password_confirm 不同,我假设它是attr_accessor)。

标签: ruby-on-rails validation params


【解决方案1】:

我认为应该这样做:

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 不会持续存在,因此需要条件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多