ruby-on-rails - RoR 3.1 中的 password_digest、has_secret_password 和表单验证

标签 ruby-on-rails validation

如果您还没有看过,请查看最新的 railscast authentication in rails 3.1 。他在生成模型时使用 password_digest:string 并将 has_secret_password 添加到 User 模型中。他还添加了一些accessible_attributes、:password 和:password_confirmation。

通过使用 validates_confirmation_of :password 我们可以确保在创建实例之前确认密码。如果我将表单中的密码字段留空,则会收到以下错误消息:

ruby-1.9.2-p180 :024 > u = User.new
 => #<User id: nil, name: nil, email: nil, password_digest: nil, created_at: nil, updated_at: nil> 
ruby-1.9.2-p180 :027 > u.save
   (0.4ms)  SELECT 1 FROM "users" WHERE "users"."email" = '' LIMIT 1
 => false 
ruby-1.9.2-p180 :028 > u.errors.full_messages
 => ["Password digest can't be blank"]

当然,我们不想在与用户交流时将密码字段称为“密码摘要”。如何更改此错误消息?

奖金问题
当使用 validates_confirmation_of 并使用不匹配的密码时,我收到两条错误消息告诉我,只有 :password 标签和输入标签被 fields_with_errors div 包围。如果密码不匹配,我还想突出显示 password_confirmation 输入,如果可能,将其从密码部分完全删除。

我应该编写自己的方法来检查密码确认吗?如果是这样,您能否提供一些小指南?

最佳答案

解决此问题的官方方法是将以下内容添加到您的语言环境文件中:

en:
  activerecord:
    attributes:
      user:
        password_digest: 'Password'

英语语言环境文件位于 config/locales/en.yml 。您可能必须重新启动服务器才能将更改加载到您的环境中。

关于ruby-on-rails - RoR 3.1 中的 password_digest、has_secret_password 和表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336332/

相关文章:

Spring - Jackson 请求映射与验证。当为 long 属性给出字符串时抛出 "HttpMessageNotReadableException"

ruby-on-rails - 如何在 Ruby on Rails 中验证 activeRecord 模型中的字段值?

ruby-on-rails - REST 客户端和外来字符

ruby-on-rails - 在哪里可以推广 Rails 应用程序?

javascript - 如何从rails中的javascript调用 Controller 方法

ruby-on-rails - heroku pg:psql时显示Heroku : This version of the API has been Sunset.

ruby-on-rails - 为什么 HABTM 上的 "validate"选项不起作用?

javascript - 验证失败时停止触发 asp.net btnsave.click 事件

ruby-on-rails - 如何使用 ruby​​ on Rails 3.2 将 ajax 添加到 jquery-ui slider

javascript - 如果javascript中验证失败如何停止表单提交