我尝试将密码长度验证添加到创建模型的表单中,即艺术家。表单有三个字段:名称,电子邮件和密码。没有密码确认字段。我在所有三个字段中添加了验证。当我填写错误的字段时,名称和电子邮件验证都会返回相应的错误,并且在正确填写字段时都不会出现错误。但是无论我为密码字段填写的密码长度如何,它总是会出现错误"密码太短。"
目前为止验证的代码
档案:Artist.rb
class Artist < ActiveRecord::Base
# attr_accessible :artist_name, :route_name
include UsersHelper
has_many :band_members
has_many :users, through: :band_members
has_many :events
has_many :performers
has_many :soundcloud_embeds
has_many :petitions
has_secure_password #validations: false
validate :should_not_have_profanities
validates :artist_name, presence: true
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
validates :password, length: 6..50
before_create { generate_route_name if route_name.blank? }
before_save { |user| user.email = email.downcase }
到目前为止我尝试了什么:
切换:密码为:password_digest。这不起作用,因为它的密码摘要!=密码。
添加&#39; on:create&#39;验证:密码&#39;。这似乎对修复问题没有任何影响。
答案 0 :(得分:0)
我认为它应该是in
,而不是within
...
validates :password, length: { in: 6..50 }
见这里:http://guides.rubyonrails.org/active_record_validations.html#length
答案 1 :(得分:0)
我经常喜欢使用Regex进行字符验证。很难学习但很有帮助。对于字符串长度,您需要在文件中添加如下内容:
VALID_PASSWORD_REGEX = /[a-zA-Z0-9]{6,16}/
validates format: { with: VALID_PASSWORD_REGEX }