0
我有一个模型用户具有通常的属性电子邮件,email_confirmation,密码,password_confirmation。我使用“has_secure_password”,因此数据库中的真实属性是email和password_digest。不过,我想限制密码长度不超过6个字符的空格。如何使用Rails在模型中设置虚拟属性?
这里是我的模型:
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('[email protected]') LIMIT 1
=> true
感谢您的帮助。
我试过你的代码,似乎工作正常,当我尝试user.valid?时,我得到错误,你重新加载你的控制台,并再次尝试。 – suren
如果您自己解决它,请使用.gsub(/ \ s + /,“”)删除字符串中的所有空格 – suren
,最好编写自己的答案(并接受)。这样,问题就不会公开。 – Roger