`
wosmvp
  • 浏览: 21370 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

更新用户部分字段时跳过密码校验

阅读更多
如果在User 模型中有定义:

validates_length_of :password,:within => 6..40


此时如果想使用如下更新user的元素
@user.update_attributes(:email => params[:user][:email], :im => params[:user][:im])

就会因为密码校检不通过而失敗


在这里  http://www.iteye.com/topic/177000 看到这問題,看到里面的解决方案都不算很好,于是另开一贴记下自己的看法


解决方案就是使用如下来定义user的模型:
validates_length_of :password,:within => 6..40,:if => :password_required?


  def password_required?
    hashed_password.blank? || !password.blank?
  end

这样就是只有 在用户没有密码时 或者 用户输入含有 password 部分 才要求校检密码,OK問題应该完美解决了
分享到:
评论
7 楼 qichunren 2008-11-10  
validates_length_of :password, :in => 6..20, :allow_nil => true

这样不更好么?
6 楼 nan1nan1 2008-11-06  
Quake Wang 写道
wosmvp你用的版本是多少?
我记得2.1版本以后有partial update
update_attributes可以跳过字段校验


partial update为true时,并不能跳过validation吧
只是并发update的时候,能够使一条记录处于invalid状态。
5 楼 wosmvp 2008-11-06  
Quake Wang 写道
wosmvp你用的版本是多少?
我记得2.1版本以后有partial update
update_attributes可以跳过字段校验


我用 Rails2.1.0 开发测试,不可以跳过的
4 楼 QuakeWang 2008-11-06  
wosmvp你用的版本是多少?
我记得2.1版本以后有partial update
update_attributes可以跳过字段校验
3 楼 yautah 2008-11-06  

更新单个字段可以用
@user.update_attribute_with_validation_skipping(name,value)

更新多个的话
试试 update_all 吧
2 楼 wosmvp 2008-11-04  
bugx 写道
我好像
   1. @user.update_attributes(:email => params[:user][:email], :im => params[:user][:im]) 
直接这样就可以了哦


Realy?  http://www.iteye.com/topic/177000 难道这楼楼主RP不好 

呵呵,不过我用  @user.update_attributes(params[:user])  这样肯定不行,所以就使用到了上面的方法。
1 楼 bugx 2008-11-04  
我好像
   1. @user.update_attributes(:email => params[:user][:email], :im => params[:user][:im]) 
直接这样就可以了哦

相关推荐

Global site tag (gtag.js) - Google Analytics