ActiveRecord[八]:数据的更新

上一篇 / 下一篇  2007-09-14 13:18:22 / 个人分类:rubyonrails学习笔记

1、用save()方法,将记录中的所有字段都更新,如:
order = Order.find(123)
order.name = "Fred"
order.save  #不只更新name属性,会将order对象的所有属性都更新,即使这些属性没有发生变化
2、要更新一个对象,用find_by_sql取出要更新的对象时,必须包含id字段,如:
orders = Order.find_by_sql("select id,name,pay_type from orders where id=123")  #必须包含id字段
first = order[0]  #只更新一个对象
first.name = "Wilma"
first.save
3、用update_attribute()方法更新某几个特定字段的值,如:
order = Order.find(123)
order.update_attribute(:name,"Barney") #只更新name属性的值

order = Order.find(321)
order.update_attribute(:name=>"Barney",
                       :email=>"barney@bedrock.com") #更新name和email属性的值
4、用update()和update_all()方法可以将“读取数据”与“更新数据”的操作合二为一
update()的第一个参数是要更新记录的id或id组成的数组,第二个参数是要更新的属性或一个属性值hash组成的数组,如:
order = Order.update(12,:name=>"Barney",:email=>"barney@bedrock.com")
update_all()允许指定update语句中的set和where子句,如:
result = Product.update_all("price = 1.1*price","title like '%Java%'")  #将带 Java 字样的货品价格提高10%
5、save()和save!(),save成功返回true,失败返回false,可以自己决定是否检查save()方法的结果,而save!失败会抛出RecordInvalid异常


TAG:

小飞猪之Ruby窝 引用 删除 drive2me   /   2007-09-15 15:56:34
哇,你坚持写学习笔记,太好了!
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-01-08  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 461
  • 日志数: 19
  • 建立时间: 2007-08-30
  • 更新时间: 2007-11-27

RSS订阅

Open Toolbar