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:
-
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. -
So in my new action in my PortletsController I just do @portlet =
Portlet.new -
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 %> -
Everything renders nice and I do get inputs with name
portlet[hash_value][heading] etc. -
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. -
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