Rails 5 / 6 / 7
| Method | Uses Default Accessor | Saves to Database | Runs Validations | Runs Callbacks | Updates updated_at/updated_on | Respects Readonly | 
|---|---|---|---|---|---|---|
attribute= | 
Yes | No | n/a | n/a | n/a | n/a | 
attributes= | 
Yes | No | n/a | n/a | n/a | n/a | 
assign_attributes | 
Yes | No | n/a | n/a | n/a | n/a | 
write_attribute | 
No | No | n/a | n/a | n/a | n/a | 
[]= | 
No | No | n/a | n/a | n/a | n/a | 
update | 
Yes | Yes | Yes | Yes | Yes | Yes | 
update_attribute | 
Yes | Yes | No | Yes | Yes | Yes | 
update_attributes | 
Yes | Yes | Yes | Yes | Yes | Yes | 
update_column | 
Yes | Yes | No | No | No | Yes | 
update_columns | 
Yes | Yes | No | No | No | Yes | 
User.update | 
Yes | Yes | Yes | Yes | Yes | Yes | 
User.update_all | 
No | Yes | No | No | No | No | 
Note that update_attributes is no longer available on Rails 7 (it was only an alias to update before anyway).
Rails 4
| Method | Uses Default Accessor | Saved to Database | Validations | Callbacks | Touches updated_at | Readonly check | 
|---|---|---|---|---|---|---|
attribute= | 
Yes | No | n/a | n/a | n/a | n/a | 
write_attribute | 
No | No | n/a | n/a | n/a | n/a | 
update_attribute | 
Yes | Yes | No | Yes | Yes | Yes | 
attributes= | 
Yes | No | n/a | n/a | n/a | n/a | 
update | 
Yes | Yes | Yes | Yes | Yes | Yes | 
update_column | 
No | Yes | No | No | No | Yes | 
update_columns | 
No | Yes | No | No | No | Yes | 
User.update | 
Yes | Yes | Yes | Yes | Yes | Yes | 
User.update_all | 
No | Yes | No | No | No | No | 
Rails 3
| Method | Uses Default Accessor | Mass Assignment Protection | Saved to Database | Validations | 
|---|---|---|---|---|
attribute= | 
Yes | No | No | n/a | 
write_attribute | 
No | No | No | n/a | 
update_attribute | 
Yes | No | Yes | No | 
attributes= | 
Yes | Yes* | No | n/a | 
update_attributes | 
Yes | Yes | Yes | Yes | 
* Mass Assignment Protection for attributes= is overridable.
Further reading: update_attributes vs. update_attribute in ActiveRecord
Posted by Emanuel to makandra dev (2016-10-06 07:45)