数据更新方法对比

方法

使用默认 Accessor?

持久化对象?

校验

回调

更新 updated_at

Readonly 检查

单属性 多属性

x=

-

-

-

-

write_attribute

-

-

-

-

update_attribute

assign_attributes & attributes=

-

-

-

-

update & update_attributes

update_column

update_columns

User::update

User::update_all

x= 表示直接赋值,其它几个是方法名

write_attribute(:name, ?) 等价于 user[:name]= ?

User::update 是类方法,直接封装了 User#update 实例方法,效果是一样的。

update & update_attributes 封装了 assign_attributes

update_column 直接封装了 update_columns

参考

Different Ways to Set Attributes in ActiveRecord

最后更新于