Continuing the discussion from Custom user fields:
I am thinking of removing topic.meta_data and all other uses of hstore and replacing with the same pattern I created for User.custom_fields. Keeping naming and implementation consistent for Post,User,Topic
Its easier to index, has better auditing (timestamps) and thins out our tables cause data is stored in an external table. So, when you do Topic.first you are not yanking out meta_data hstore columns, can use the same implementation on Post,User,Topic with the same interface, overall this is all win.
Also, I kind of like the name custom_fields as its fairly descriptive of the role here.
Alternatively if we REALLY want hstore lets rename this from the awkward meta_data name and use an external table for the hstore column with has_one back to the original table.
I want the code centralized, names consistentaized and data extracted to an aux table (my main priorities). I feel hstore is a bit overkill here, but could accept it if you feel strongly you really want it.