Good news everyone! Using serialized attributes, or the JSON and HStore columns in postgres will be a lot more straight forward in Rails 4.2.
Up until now, Active Record cannot detect in-place changes to these attributes (e.g.
user.settings['favourite_color'] = params[:favourite_color]). As a result, serialized attributes are always re-written to the database regardless of whether there are any changes to its content. On the other hand, in-line changes to JSON and HStore attributes are never re-saved to the database automatically and requires you to jump through a few hoops to get them working.
Well, not anymore. In the last few weeks, @sgrif has been hard at work refactoring the internals of Active Record. Those solid foundation work allowed him to address the dirty serialized attributes problem with relative ease. With this change, these column types now just work like any other scalar attributes.