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将跳过所有其他验证,我只想跳过密码验证。那么你可能想看看