gpt4 book ai didi

ruby-on-rails-3 - Rails3 + 设计 : prevent password validation when updating

转载 作者:行者123 更新时间:2023-12-03 00:48:07 25 4
gpt4 key购买 nike

我正在寻找一种方法,允许用户更改其设置(用户模型),而不必更改其密码(他们仍然必须输入当前密码)。开箱即用的设计似乎允许这样做,但是当您删除可验证模块并设置自定义验证时,似乎您需要做一些工作。

我在我的用户模型中设置了以下验证:

validates :password, length: { in: 6..128 }

注册时,用户需要指定他的密码(这是我所期望的)。但是,在更新设置时,如果我将密码留空,则会向用户发出错误,提示密码必须至少为 6 个字符。

如何解决这个问题,而无需改变 Devise 的工作方式或实现某种自定义 Controller ?

最佳答案

也许这对某些人来说看起来很明显,但我花了一段时间才把它整合在一起。经过几个小时尝试不同的解决方案和变通方法并四处寻找之后,我更深入地研究了 Rails 验证,并发现了一些构造,将它们组合在一起后,这一切变得非常容易。

我所要做的就是为创建操作设置验证,为更新操作设置验证,并允许更新时留空。

  validates :password, length: { in: 6..128 }, on: :create
validates :password, length: { in: 6..128 }, on: :update, allow_blank: true

这样,我就得到了我想要的行为,而且只需要两行简短的代码。

附加说明:

一开始,我尝试过这种方式:

validates :password, length: { in: 6..128 }, on: :create

这是错误的,因为它会完全跳过更新验证。然后,用户可以在更新设置时设置短/长(或空白?)密码。

关于ruby-on-rails-3 - Rails3 + 设计 : prevent password validation when updating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12110931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com