I need to give users the ability to optionally add metadata to documents. Another way to state this is the fact that users need to add at least 5 categories to a document. Basically what I want to do is dynamically add metadata (or categories) to a document on an ad hoc basis. Here are the options that I have thought of: **Option 1:** Should I do this by dynamically creating new table columns in the database? **Option 2:** Should I define 5 columns called attirbute1,attirbute2,attirbute3,attirbute4,attirbute5 and then only use and show them if the user requires the attributes. **Option 3:** Should I create a metadata table that keeps track of the columns and the data associated with them? What do you think is the best way to achieve this? Can you think of any other ways to easily add this functionality. The problem is that the functionality needs to be very generic. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Patrick Sullivan
2008-Oct-20 16:29 UTC
Re: Design decision: Dynamically adding data question.
I would create a "meta" table with two columns: "data" and "document_id". This way is much more neat and tidy; each metadata attribute, for each document, will be it''s own row. Trying to dynamically add columns or whatever could become disasterous. Go easy on yourself and use an AR association like this: Document has_many :metas Meta belongs_to :document Document.metas will return all of the metadata attributes associated with the document, however many there may be. My naming skills suck, I think you can come up with a better model name than "meta", but you get the idea. As far as being "very generic"... I don''t know what that''s supposed to mean. I hope this is generic enough for you. On Monday 20 October 2008 10:37:02 David Smit wrote:> I need to give users the ability to optionally add metadata to > documents. Another way to state this is the fact that users need to add > at least 5 categories to a document. > > Basically what I want to do is dynamically add metadata (or categories) > to a document on an ad hoc basis. Here are the options that I have > thought of: > > **Option 1:** > Should I do this by dynamically creating new table columns in the > database? > > **Option 2:** > Should I define 5 columns called > attirbute1,attirbute2,attirbute3,attirbute4,attirbute5 and then only use > and show them if the user requires the attributes. > > **Option 3:** > Should I create a metadata table that keeps track of the columns and the > data associated with them? > > What do you think is the best way to achieve this? Can you think of any > other ways to easily add this functionality. The problem is that the > functionality needs to be very generic.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---