Hi guys
I have asked this questions on the Rails Forum as well, but haven't got any reply, so I will try here.
The thing is this:
I want to store "portlets" in a Portlet model in the db. I want to store them togheter as they are the same kind of data in a way, but there are different variateions of a portlet. They only have one db column in common, the rest can vary a lot. So to do this I would like to store the rest of the data in one single column.
What I have done to do this is the following:
1. The model Portlet contains the columns id, name, portlettype_id & hash_value. The value in portlettype_id will decide what has to be stored in the hash_value column. Reading from the docs, I have also put "serialize :hash_value" in the class code.
2. So in my new action in my PortletsController I just do @portlet = Portlet.new
3. In my new.html.erb I have done the following (I'm leaving out some formatting specific html in this example): <% form_for @project do |f| %> <%= f.text_field :name %> <%= f.collection_select :portlettype_id, ......... %> <% fields_for "portlet[hash_value] do |hf| %> <%= hf.text_field :heading %> <%= hf.text_area :body %> <% end %> <% end %>
4. Everything renders nice and I do get inputs with name portlet[hash_value][heading] etc.
5. When I submit, the development log shows "hash_value" => { "heading" => "text"} in the params hash, so it does seem to me that I do get the hash_value containing a hash itself.
6. When I save, the name and portlettype_id fields get saved correctly, but in the hash_value column i get ! map:HashWithIndifferentAccess
It seems to me that I must be doing something wrong, because when I read about serialize in the api docs, it sounds like it would do exactly what I'm after.
Any ideas? I would be glad to supply you with more info, as I badly want to solve this problem.
Thanks Kenny