我照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
- 浏览 1873
- 评论(7)
- 论坛回复 / 浏览 (7 / 4311)
- 查看更多
相关推荐
要替换某一个字段中的部分内容,可以用update 语句: UPDATE 表名 SET 字段名= REPLACE( 替换前的字段值, ‘替换前关键字’, ‘替换后关键字’ ) WHERE 字段名 REGEXP “替换前的字段值”; 比如替换标题里面的产品...
sql一个字段中的某几个字updatesql一个字段中的某几个字update
首先mysql更新数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 也可以这样用in指定要更新的记录: UPDATE mytable SET myfield = 'value' WHERE other_...
开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。 原因和解决方法 这种...
如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?本文以一个示例向大家讲解下如何实现如标题所示的情况,有此需求的朋友可以了解下
工作中遇到一个问题:要更新一个数据表。 这个表是我自己创建的,有7个字段,id、name、...一次更新多条信息的思路如下: UPDATE table_name SET field_name = CASE other_field WHEN 1 THEN 'value' WHEN 2 THEN '
首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2...
sql 在更新某字段后写入日志触发器 sql某字段更新后,触发该sql语句的sql触发器 类似于记入日志
(36条消息) MySQL(二)一条update更新语句的执行流程_商俊帅的博客-CSDN博客_update语句执行过程 (2022-06-20 下午11_35_47).html
但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的python程序示例: for x in xrange(10): sql = ''' UPDATE ...
代码如下: create trigger TR_MasterTable_Update on MasterTable after update as if update ([Type])–当Type字段被更新时,才会触发此触发器 insert into MasterLogTable select Id ,(Case [Type] when 1 then ...
以上这篇mysql更新一个表里的字段等于另一个表某字段的值实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:Sql查询MySql数据库中的表名和描述表中...
insert,update导出sql语句,很实用的小工具
最近遇到需要批量update数据的问题,一开始...原因是for循环每次update一条语句,都是一次连接过程。遇到大批数据更新的时候,效率就可想而知了。在google上找了一遍,发现ibatis里有对批量update的支持,挺好的东西。
判断是否存在,存在就update,不存在insert,不是用存储过程解决的。
django-bulk-update, 在 Django ORM上使用一个查询进行批量更新 django-bulk-update 简单批量更新 Django ORM或者 helper 函数。这个项目旨在批量更新给定的对象,使用英镑的一个查询 Django 。安装pip install ...
当修改Student表中的年龄字段时,使其只能增加,不能减少。 删除Student表中的学生信息时,判断在SC表中该学生的平均成绩是否高于60,若高于60,则不能删除,否则允许删除,同时删除SC表该学生对应的选课信息。 在...
前几天一个开发同事咨询我,update 更新字段为相同的值是否会记录binlog,我回复说不会。 其实 严格的说这个答案是不准确的,说要区分场景。是否记录 update 语句到binlog依赖于 binlog_format 的设置。具体情况 ...