Sorry for my ignorance, in your example have you forgot Activity model and activities table?
On 10 May 2012 17:37, Jeremy Walker <jez.wal...@gmail.com> wrote: > > > On 10 May 2012 16:26, Mauro <mrsan...@gmail.com> wrote: >> >> On 10 May 2012 17:05, Greg Akins <angryg...@gmail.com> wrote: >> > >> > >> > On Thu, May 10, 2012 at 10:57 AM, Mauro <mrsan...@gmail.com> wrote: >> >> >> >> I have problems on a simple design problem. >> >> I have many companies. Each company have one or more commercial >> >> activity. >> >> Activities types are: ecommerce, local unit, television, automatic >> >> vending machines, and so on. >> > >> > >> > So can each Company have many CommercialActivities >> > >> > Then.. CommercialActivity is STI, which means it has a type column and >> > sub-types can be ECommerceActivity, TelevisionActivity, etc.. >> > >> > The only warning is that if each type is dramatically different, you >> > might >> > want to investigate doing it with multiple tables so you dont have a lot >> > of >> > redundant fields trying model things with additional attributes that >> > aren't >> > shared. >> >> Yes the problem is that television, ecommerce, etc. they don't share >> the same attributes. >> > > Use a polymorphic link table. > > So tables: > companies: (name:string) > company_activities: (company_id:int, activity_id:int, activity_type:string) > television_activities(...) > ecommerce_activitiies(...) > > Models: > class Company < ActiveRecord::Base > has_many :company_activities > has_many :activities, through: company_activities > end > > class CompanyActivity < ActiveRecord::Base > belongs_to :company > belongs_to :activity, polymorphic:true > end > > and then lots of: > > class TelevisionActivity < ActiveRecord::Base > has_many :company_activities > has_many :companies, through: company_activities > end > > class EcommerceActivity < ActiveRecord::Base > has_many :company_activities > has_many :companies, through: company_activities > end > > etc > > Those could all inherit from Activity if you want to use STI, but they don't > need to. > >> >> -- >> 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@googlegroups.com. >> To unsubscribe from this group, send email to >> rubyonrails-talk+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/rubyonrails-talk?hl=en. >> > > -- > 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@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. -- 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@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.