前面了解了检索的方法,这次来看看Active Record怎样更新数据库中的记录。
如果你有一个Active Record对象(或许对应于order表),你可以通过调用save方法将它写道数据库中去,如果这个对象是先前从数据库中读取出来的,save方法将会更新既有的记录,否则将会新建一条记录。
如果一条既有记录被更新,Active Record将会用它的主键和来匹配内存中的对象,Active Record对象中的属性被更新到对应的列,即使一个列中的值没有变化也会被更新,在下面的例子中,id为123的订单所有的内容都会被更新:
order = Order.find(123) order.name = "Fred" order.save
不管怎样,在下面的例子里,Active Record对象只包含id,name,paytype,当对象被保存的时候仅仅只有这些字段被更新,注意如果你想要把对象保存到数据库,那么在使用find_by_sql方法时,一定要包含id字段。
orders = Order.find_by_sql("select id, name, pay_type from orders where id=123") first = orders[0] first.name = "Wilma" first.save
另外,Active Record还提供了update_attribute()方法,该方法可以将Model对象的某个属性保存到数据库。
order = Order.find(123) order.update_attribute(:name, "Barney") order = Order.find(321) order.update_attributes(:name => "Barney", :email => "barney@bedrock.com")
我们可以把读取和更新结合在一起,使用update()方法或update_all(),update()方法使用一个id和一组属性,如果在数据库中对应的记录,就更新指定的属性,然后返回model对象。
order = Order.update(12, :name => "Barney", :email => "barney@bedrock.com")
也可以传递一组id或者属性和值的hash给update()方法,这样会更新所有匹配的记录,并且返回一组model对象。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 对象
, 方法
, 更新
, active
, model first
, order
order方法
rails activerecord、ruby activerecord、ruby on rails、ruby on rails 教程、ruby rails,以便于您获取更多的相关知识。