`
wosmvp
  • 浏览: 21698 次
  • 性别: 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]) 
直接这样就可以了哦

相关推荐

    基于 html5 , css3 , js 的,对表单提交的账号密码做初步的校验.zip

    7. **Best Practices**:在实际开发中,除了基础验证,我们还应遵循最佳实践,如使用HTTPS保护数据安全,使用哈希和盐值存储密码以增加安全性,以及利用HTML5的`formnovalidate`属性允许用户跳过某些验证。...

    不重启Mysql修改root密码的方法

    此选项允许MySQL在启动时跳过权限校验,从而任何人都可以不需要密码直接访问数据库。然而,出于安全考虑,通常还会加上skip-networking选项,让mysqld不监听任何TCP/IP连接请求,从而只允许本机访问。具体操作步骤...

    windows下忘记MySQL密码的修改方法

    在这个目录下,启动MySQL服务,并跳过权限校验,以便能够无需密码登录。可以通过输入命令"mysqld-nt --skip-grant-tables"来实现这一点。然后,在一个新的命令行窗口中输入"mysql"命令,进入MySQL命令行界面。 进入...

    MySQL数据库操作手册.doc

    如果忘记密码,可以在my.ini配置文件中添加`skip-grant-tables`字段来跳过密码验证。 数据表操作是数据库管理的核心。创建数据表的命令是`CREATE TABLE`,其中可以定义字段名、字段类型、字段属性和表选项。字段...

    路由器cisco2811恢复口令.doc

    路由器将以非正常模式启动,跳过NVRAM中的配置。 5. **进入特权模式** 路由器启动后,会进入特权执行模式(ENABLE模式)。此时,输入`config mem`命令,这将使路由器使用内存中的配置,而不是NVRAM中的配置。 6. ...

    js 验证表单中的值是否改变

    在JavaScript中,表单验证是前端开发中必不可少的一部分,它主要用于确保用户输入的数据符合预期的格式和要求。本文将深入探讨如何使用JavaScript来验证表单中的值是否发生改变,以便在用户提交表单前进行必要的数据...

    WINRAR5.0正式注册版

    此块有助于帮助 WinRAR 安全跳过扩展数据,如附在压缩文件后 的数字签名; c) RAR 5.0 压缩文件不支持 arcname.rNN 风格的旧分卷名,只使用 arcname.partN.rar 卷名; d) RAR 4.x 和 RAR 5.0 都不再支持文件...

    82分-云数据库 MySQL 产品认证(1).docx

    4. 腾讯数据迁移平台 DTS 配置流程中,需要创建 DTS 数据迁移服务,选择迁移类型和库列表,然后启动迁移,但可以跳过 MySQL 版本的检查。 5. 云数据库 MySQL 初始化时,必选项包括默认字符集、默认端口号、表名是否...

    sqlldr例子

    SQL*Loader默认使用直接路径加载,这种模式下,数据直接写入数据文件,跳过了Redo日志,从而提高了导入速度。但要注意,这可能导致并发问题,因为在直接路径加载期间,表可能不可用于其他用户。 8. **使用游标加载...

    Guns技术文档

    - 权限控制与校验,包括用户、角色和资源的管理,以及前端页面对权限资源的显示。 - **多数据源的使用**:文档说明了如何配置和使用多个数据源。 - **分页操作**:涵盖了简单查询和复杂查询的分页方法,以及如何...

    自定义Action实现Action接口(实现简单登录功能)

    `@SkipValidation`注解用于跳过该方法的字段验证,如果你需要对用户名和密码进行校验,可以使用Struts2的注解或者自定义拦截器来实现。 在实际开发中,登录功能可能会涉及到更多复杂的操作,如会话管理、密码加密、...

    excel数据转入mysql数据库中

    因此,设置错误处理机制,如跳过错误行或记录错误日志,是非常重要的。 7. 性能优化:对于大量数据,可能需要考虑分批导入,以减少内存占用和提高导入速度。同时,合理利用索引可以提升查询性能,但导入时需注意...

    飞恒进销存管理系统v7.21(源代码)

    1、系统修护中增加数据校验,校验当前库存是否正确,前提是中间没有删除过数据(vOtherInOutDetail.sql,pcdMonthAudit.sql,oldONHAND.sql,pcdInsOldOnHand.sql,vInOutDetail.sql,errONHAND.sql,CheckOnHandQty...

    Validform表单验证总结篇

    这些参数包括但不限于btnSubmit(提交按钮的选择器)、btnReset(重置按钮的选择器)、tipType(提示信息类型)、ignoreHidden(是否忽略隐藏字段)、dragonfly(值为空时是否跳过验证)、tipSweep(是否仅在表单...

    T-SQL查询技巧语句(收藏版).txt

    4. **跳过指定数量记录的分页查询:** - 使用`SELECT TOP m-n+1 * FROM 表名 WHERE (id NOT IN (SELECT TOP n-1 id FROM 表名))`来实现。 5. **随机排序分页查询:** - 使用`ORDER BY NEWID()`或`RAND()`等函数对...

    此为华为的培训课程此为华为的培训课程此为华为的培训课程

    - **Authenticate阶段**:进行身份验证,如果未启用验证则直接跳过此阶段。 - **Network阶段**:配置网络层参数,如IP地址。 - **Terminate阶段**:关闭链路前的最后阶段,释放资源。 综上所述,HDLC协议和PPP协议...

    mysql 5.7安装 MySQL 服务无法启动但是服务没有报告任何错误

    其中,`skip-grant-tables`是一个重要的配置项,它的作用是让MySQL启动时跳过权限校验,这对于首次安装和配置MySQL服务时尤其有用,因为在默认情况下,服务启动时需要验证root账户的登录权限。 配置完成后,可以...

    HTTPS协议详解(四):TLS:SSL握手过程1

    当客户端和服务器再次连接时,如果发现之前的会话存在于会话缓存中,可以跳过部分握手步骤,直接使用之前协商的密钥和参数,显著减少握手时间。 3. 重建连接 重建连接主要是指在会话中断或超时后,客户端和服务器...

Global site tag (gtag.js) - Google Analytics