gpt4 book ai didi

ruby-on-rails - Rails 验证最佳实践

转载 作者:行者123 更新时间:2023-12-04 21:12:32 27 4
gpt4 key购买 nike

我对我的 user 进行了验证:

  validates :password,
presence: true,
confirmation: true,
length: { minimum: 6 },
:on => :create

这是显而易见的。当我创建(注册)一个新的 user , 我想填写他们的密码因此这就是为什么 presence: true .

案例 1)当用户想要更新他的帐户(假设更改他的用户名)时,表单只有 emailusername领域。没关系,验证没问题。

案例 2)他忘记了密码,我向他发送了他的“忘记密码链接”,他在创建新密码的页面上。表单有这两个字段:密码和密码确认。然而, 他将这两个字段都留空 并提交表格。验证通过 因为它只是 :on => create !因为情况 1)

我无法添加 :on => update因为 案例 1) 不会通过,因为没有密码字段。

在这种情况下我该怎么办?这个“问题”的最佳实践或真正的解决方案是什么?

最佳答案

我对这种情况所做的不是使用 on: :create ,我只在设置/更改密码时使用我设置的虚拟属性。像这样的东西:

validates :password, if: :changing_password?
attr_accessor :password_scenario

def changing_password?
self.password_scenario.present?
end

然后在您的 Controller 中,只要您需要密码,您只需将 password_scenario 设置为 true。

关于ruby-on-rails - Rails 验证最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31701421/

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