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.

Reply via email to