【发布时间】:2014-01-10 20:50:50
【问题描述】:
我有一个具有通常属性 email、email_confirmation、password、password_confirmation 的模型用户。我使用“has_secure_password”,所以数据库中的真正属性是电子邮件和密码摘要。但是,我想将不带空格的密码长度限制为 6 个字符。
这是我的模型:
class User < ActiveRecord::Base
before_validation :auto_strip_confirmation
validates :email, presence: true,
length: { maximum: MAX_SIZE_DEFAULT_INPUT_TEXT },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false },
confirmation: true
validates :email_confirmation, presence: true
has_secure_password
validates :password, length: { minimum: MIN_SIZE_USER_PASSWORD,
maximum: MAX_SIZE_USER_PASSWORD }
private
def auto_strip_confirmation
self.password.strip!
self.password_confirmation.strip!
end
end
但我在控制台中得到了这个:
> user.password = user.password_confirmation = "a "
=> "a "
> user.valid?
User Exists (0.8ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('user@example.com') LIMIT 1
=> true
感谢您的帮助。
【问题讨论】:
-
我试过你的代码,似乎工作正常,当我尝试 user.valid 时我得到错误?,你是否重新加载你的控制台并再试一次。
-
strip 只会删除前导和尾随空格,使用 .gsub(/\s+/, "") 删除字符串中的所有空格
-
如果你自己解决了,最好自己写答案(并接受)。这样问题就不会一直悬而未决。
标签: ruby-on-rails ruby