update_column(s)直接操作数据库。
update_attribute只是跳过验证,但是依然会回调函数
对数据的修改update(), update_column()和update_attribute()相同都是改数据, 只是update_coulumn()会直接生成sql操作数据库, 跳过验证和回调, update_attrbute()则只跳过验证, 依然会执行回调, update()则验证和回调都会执行
update_all()则是对类的操作跳过验证和回调直接生成sql,并更改数据表的一整列数据
Foo.update_all(some_column: "bar")
This will generate SQL query to database:
UPDATE "foos" SET "some_column" = "bar";
实例:
1) update_column
ord = Order.find(1)
ord.update_column(:username, "Tom")
2) update_attribute
ord = Order.find(1)
ord. update_attribute(:username, “Tom”)
ord. update_attribute(:username=> “Tom”, :password=>”psp”)
3) update
Order.update(1, :username=> “Tom”, :password=>”psp” )
4) update_all
Order.update_all (“password=psp” )