我照Agile Web Development with Rails里第11章用户管理的做了,用了password这个虚拟字段。
user.rb中的部分代码:
validates_length_of :password, :in => 6..20
def password
@password
end
def password=(pwd)
@password = pwd
returen if pwd.blank
created_new_salt
self.hashed_password = User.encrypted_password(self.password, self.salt)
end
然后,我需要update该用户记录部分字段的值,比如email,im等等,但不希望改变密码,我用的是下面的办法。
user_controller.rb中的部分代码:
def update
@user = User.find(params[:id])
if @user.update_attributes(:email => params[:user][:email], :im => params[:user][:im])
flash[:notice] = '个人信息修改完成'
redirect_to :action => 'index'
else
render :action => 'edit'
end
end
因为这个password字段并没有存储在数据库中,因此它值为空,于是每次都会出现校验错误:Password is too short (minimum is 6 characters)。
我想问一下只update部分字段应该用什么办法比较好(别的字段需要保留原来的值,可以先取出来;但由于SHA1加密,passowrd不能由hashed_password取出)?
还有能否在某些地方跳过部分校验?我这里的password需要在create和update时都要校验,但我想有的时候修改部分信息的时候不要校验password?
分享到:
- 2008-03-27 18:00
- 浏览 1954
- 评论(7)
- 论坛回复 / 浏览 (7 / 4372)
- 查看更多
相关推荐
在实际开发中,我们经常需要更新数据库中的某些字段,而不是所有字段。那么,如何使用 Hibernate 实现更新某些字段呢? 首先,我们需要了解 Hibernate 的 update 方法。在 Hibernate 中, update 方法可以更新整个...
在Java开发中,处理大量数据时,高效的数据读取、校验和存储是至关重要的。Apache POI等库常用于处理Excel文件,但其性能在处理大数据时可能会受限。这时,阿里巴巴开源的EasyExcel应运而生,它专门优化了Excel处理...
在SQL语言中,更新多条记录的字段值且每行记录的字段值各不相同时,通常有两种常用的方法。一种是使用CASE语句结合IF-THEN逻辑,另一种是利用INSERT语句的DUPLICATE KEY UPDATE特性。这两种方法都可以避免循环执行多...
在SQL中更新表中某个字段的部分内容是一个常见的需求,尤其是在数据清洗或数据转换过程中。根据题目中的描述与部分代码示例,本篇将详细介绍如何在SQL中实现对某个字段内指定位置的字符进行替换、插入或删除等操作。...
在MySQL中,更新多条记录通常涉及到`UPDATE`语句的使用。在处理批量更新时,如果需要根据特定条件更新不同记录的多个字段,可以采用`CASE`语句结合`WHERE`子句来实现。标题提到的问题是,在已经通过`INSERT`方法导入...
在MySQL数据库中,更新表中特定字段的特定内容是一项常见的任务。这通常通过`UPDATE`语句配合`REPLACE`函数来实现。`REPLACE()`函数用于在字符串中替换所有出现的子串,而`REGEXP`是正则表达式匹配,两者结合可以...
在数据库或数据集中,每个记录都由多个字段组成,每个字段代表一种特定的信息,如名称、地址或日期。更新字段是指修改现有数据集中的某个特定属性值,这可能涉及到单个记录,也可能涉及整个数据集的批量更新。 本...
在MySQL中,批量更新多条记录的同一个字段为不同的值是一项常见的操作,特别是在处理大量数据时,为了提高效率,我们需要避免循环执行单独的UPDATE语句。以下是一些关于如何高效地进行批量更新的方法。 首先,最...
例如,如果你需要在多个表中查找最新记录,并确保某些关联字段的一致性,查询会变得更复杂。不过,上述示例提供了一个基础的框架,你可以根据具体需求进行扩展。 Access数据库(.accdb文件)是Microsoft Office套件...
本篇文章将详细介绍如何在SQL Server中创建一个触发器,当某个表中的特定字段被更新时,记录相关信息到另一个表中,以实现类似日志记录的功能。 #### 触发器概述 触发器是SQL Server提供的一种机制,可以在表或视图...
在实际项目中,我们经常遇到这样的需求:当需要更新数据库记录时,只更新实体对象中被设置(set)过的属性,而忽略那些未被修改的字段。为了实现这一功能,"Mybatis只更新set过的字段插件"应运而生。 这个插件的...
UPDATE语句是SQL语言的一个重要部分,用于修改已存在于数据库表中的记录。在VB中,我们可以结合ADO(ActiveX Data Objects)库来执行这些操作。 首先,确保你已经安装了ADO库,如果没有,你需要在项目中引用...
开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。 原因和解决方法 这种...
但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的python程序示例: for x in xrange(10): sql = ''' UPDATE ...
- U: UPDATE,表示一条记录被更新了 - D: DELETE,表示一条记录被删除了 - X: 表示记录是变化的,但具体是新增还是更新则需要进一步分析,通常是变化后的值 - I: 表示记录有数据,但是不参与激活过程 根据上述描述...
在Oracle数据库中,多表关联的UPDATE语句用于更新一个表中的数据,这些数据依赖于另一个或多个表的记录。这种操作在数据整合、错误修正或者数据同步时非常常见。以下我们将详细探讨如何使用不同方式执行多表关联的...
例如,如果我们有一个名为`Students`的表,包含`ID`,`Name`和`Age`三列,我们可以这样插入一条新记录: ```sql INSERT INTO Students (ID, Name, Age) VALUES (1, '张三', 18); ``` 接着是UPDATE语句,它用于修改...
在SQL Server中,触发器是一种特殊的存储过程,它在数据更改操作(如INSERT,UPDATE或DELETE)发生时自动执行。触发器可以用于实现复杂的业务规则和数据验证,以确保数据库中的数据完整性。在这个例子中,我们关注的...
本教程将指导你如何使用SQL的`UPDATE`命令在ASP中修改数据库表中的一个记录。 首先,`UPDATE`语句是SQL语言中用于修改已有记录的关键语句。其基本格式如下: ```sql UPDATE 表名 SET 字段名1 = 新值1, 字段名2 = ...
在赋值时,根据字段类型,可能需要添加引号或特定符号。例如,文本型和备注型字段值需要加引号,日期/时间型字段值需加#号,布尔类型用True或False表示。 **2. ASP中执行SQL Update操作** 在ASP中,我们通常会先...