Which associations should I use? to extend ad model.

I would like to use only one table ads on database.

regular AD: :title :price :content :username

trip AD: :title :price :content :username :from :to

Which associations should I use? Polymorphic Associations The has_and_belongs_to_many Else?

I create a Gist with my recent ideas: https://gist.github.com/1770515

what are the other objects? What is it that has_and_belongs_to_many? for polymorphic relationships you want to ask if more than one So class Ad    belongs_to :adable, :polymorphic => true end

class Customer    has_many :ads, :as => :adable end

class NewsPaper has_many :ads, :as=>:adable end

At least I think this is what you are looking for. Maybe some others will give advice.

STI , Single Table Inheritance (This structure is best used for models that have identical, or very similar attributes )

trip AD << regular AD

class RegularAd < ActiveRecord::Base end class TripAd < RegularAd end

migration (Rails 3.1) class CreateAds < ActiveRecord::Migration   def change     create_table(:regular_ads) do |t|       t.string : title       t.float : price       t.string : content       t.string : username       t.integer : from       t.integer: to     end   end end

I think form me i should be something like this below because I need different validations to each type of ads. Or in your example could i set up this kind of different validations?

class Ad < ActiveRecord::Base

validates_presence_of :name, :email, :price(?), :category_id(?)

:name

:phone_number

:email

:advertiser_id

:token

:verification_date

:level

:category_id

:admin_id

:price

:display_counter

:type

end


> class RegularAd < Ad

> validates_presence_of :title, :ad_content

> 

> :title

> :ad_content

> end