The easiest but too big is a text columns so you can use activerecord' serialization of attributes to save anything you want on a text field and activerecord will handle casting.
You could use a string column if you know your values won't be too big (VARCHAR(255)) and you know what types you want to accept and handle serialization yourself like: def value=(something) val = if value.is_a?(Integer) "integer:#{something}" elsif value.is_a?(String) "string:#{something}" elsif value.is_a?(Date) "date:#{something} # etc... write_attribute(:value, val) end def value type, val = read_attribute(:value).split(':') case type when "integer" then val.to_i when "string" then val when "date" then Date.parse(val) etc... end El jue., 26 sept. 2019 a las 17:17, fugee ohu (<fugee...@gmail.com>) escribió: > > > On Monday, September 16, 2019 at 4:31:29 PM UTC-4, Ariel Juodziukynas > wrote: >> >> Personally, I would do this: >> >> auctions table >> (with the basic shared information of all auctions and an "auction type")) >> >> properties table >> property_name (like network, carrier, publisher, etc) >> auction_type (like cellphone, book, etc) >> >> auctions_properties >> auction_id >> property_id >> value >> >> That way you can have any number of auction types with any number of >> specific properties with just 3 tables. >> >> Note that the "value" column would be some string variation (VARCHAR, >> CHAR, TEXT, etc) depending on your needs, maybe you want to redesign it a >> little if you want to store different types. Like if you want to store an >> integer (and retrieve an integer) you'll have to save the original type and >> reparse it (you could use serialization but that requires a TEXT column and >> maybe you can't use that many space) >> >> El lun., 16 sept. 2019 a las 17:19, fugee ohu (<fuge...@gmail.com>) >> escribió: >> >>> I was looking at some auction projects that use a single listings table >>> for all auctions but I know on auction sites the form will be different for >>> different types of items like if you're selling a cell phone there'll be a >>> form field for network, carrier, whatever and if you're selling a book >>> there'll be form fields for publisher, year of publication, so they would >>> have separate tables I assume for books, cell phones, etc? Then how would >>> they treat them all as one? >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ruby on Rails: Talk" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to rubyonra...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/rubyonrails-talk/512f8b73-e3a4-4e74-95e7-4281e7b54821%40googlegroups.com >>> <https://groups.google.com/d/msgid/rubyonrails-talk/512f8b73-e3a4-4e74-95e7-4281e7b54821%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> > What data type do you suggest for value column > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rubyonrails-talk+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rubyonrails-talk/e74aaf6b-b9e1-4847-a6d3-3120829fa3bc%40googlegroups.com > <https://groups.google.com/d/msgid/rubyonrails-talk/e74aaf6b-b9e1-4847-a6d3-3120829fa3bc%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAPS3bcCM%3DSv-%2BExu7_dh2b7nOZhSv67e8YgHKHPqFuch6r%3D-ug%40mail.gmail.com.