Ruby on rails 无论密码长度如何,密码长度验证始终会触发

Ruby on rails 无论密码长度如何,密码长度验证始终会触发,ruby-on-rails,validation,passwords,Ruby On Rails,Validation,Passwords,我试图将密码长度验证添加到创建模型的表单中,即艺术家。表单有三个字段:名称、电子邮件和密码。没有密码确认字段。我向所有三个字段添加了验证。当我错误地填写这些字段时,名称验证和电子邮件验证都会返回相应的错误,当正确填写这些字段时,两者都不会给出错误。但是,无论我在password字段中填写的密码长度是多少,它都会给出一个错误“password is too short” 迄今为止用于验证的代码 文件:Artist.rb class Artist < ActiveRecord::Base #

我试图将密码长度验证添加到创建模型的表单中,即艺术家。表单有三个字段:名称、电子邮件和密码。没有密码确认字段。我向所有三个字段添加了验证。当我错误地填写这些字段时,名称验证和电子邮件验证都会返回相应的错误,当正确填写这些字段时,两者都不会给出错误。但是,无论我在password字段中填写的密码长度是多少,它都会给出一个错误“password is too short”

迄今为止用于验证的代码

文件: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 }
class-Artist
到目前为止,我尝试的是:

将:密码切换到:密码\u摘要。这不起作用,因为它是密码摘要!=密码


将“on:create”添加到“validates:password”。这似乎对解决问题没有任何影响。

我认为它应该是
中的
,而不是
中的

validates :password, length: { in: 6..50 }

请参见此处:

我经常喜欢使用正则表达式进行字符验证。很难学,但很有帮助。对于字符串长度,文件中需要如下内容:

VALID_PASSWORD_REGEX = /[a-zA-Z0-9]{6,16}/

validates format: { with: VALID_PASSWORD_REGEX }

我认为不需要在
中使用
。试试看:
validates:password,length:6..50
我删除了其中的,问题仍然和以前一样好吧,我没有看到任何明显错误的地方。您是否已验证密码是否已通过,并且正在控制器层的对象上设置密码?检查控制台后,是,由于验证,未创建对象。能否从请求中发布参数散列?是否使用强_参数并允许密码属性?是否意味着在对象控制器中使用此方法<代码>定义艺术家参数。要求(:艺术家)。允许(:艺术家名称,:路线名称,:密码,:电子邮件,:背景图像)结束
是的,然后您的
更新
操作正在使用
艺术家参数
而不是
参数[:艺术家]