Look at the difference in what "update_attributes" (with an "s") does compared to "update_attribute". You want the singular form for what you're doing. The plural version replaces the entire attributes property of the object.
Yeah I was a little worried, because I like passing my updates as hashes,
I tend to use update_attributes A LOT, even on single attribute assignments.
It seems like that only real difference is that update_attributes saves with validation.
update_attributes will also not update protected attributes.
Is their a huge performance decrease with using update_attributes since it calls the attributes= EXCEPT for the fact that it runs validations of course?
It depends on how expensive validation is, and how important it
is to have a sanity check on the internal updates you make to
form and non-form attributes.