Ruby on rails 使用用户模型中的特定方法跳过密码验证

Ruby on rails 使用用户模型中的特定方法跳过密码验证,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,在我的用户模型中,我验证了密码和一个实例方法,如下所示: class User < ActiveRecord::Base validate :email ...... validates :password, length: { minimum: 6 } def my_method # ..... # save! end end class用户

在我的
用户
模型中,我验证了
密码
和一个
实例方法
,如下所示:

class User < ActiveRecord::Base
  validate :email ......
  validates :password, length: { minimum: 6 }

  def my_method
    # .....
    # save!
  end
end
class用户

正如您在这个方法中看到的,我调用了
save
method,它在更改某些字段后保存用户,因此我想跳过密码的验证,而不是其他验证仅当我在用户实例上调用
my_method
时,我如何才能做到这一点?谢谢你

你可以用两种方法来做

model.save(:validate => false)
看到和

跳过回调

skip_callback :validate, :before, :check_membership, :if => lambda { self.age > 18 }

如果有人感兴趣,我会找到解决方案,我只需在我的模型中添加
attr\u访问器:skip\u password\u validation
,然后在密码验证中添加一个条件
validates:password,length:{minimum:6},除非::skip\u password\u validation
,当我在带有用户模型实例的控制器中调用
my_方法
时,我在上面用true设置该属性。以下是用户模型的全部内容:

class User < ActiveRecord::Base
  validate :email ......
  validates :password, length: { minimum: 6 }, unless: :skip_password_validation
  attr_accessor :skip_password_validation

  def my_method
    # .....
    # save!
  end
end
class用户
在控制器之前我调用用户。我的方法我只添加了一行:
user.skip\u password\u validation=true


我希望这对您有所帮助:)

:validate=>false将跳过所有其他验证,我只想跳过密码验证。那么你可能想看看