This is a pretty simple question really, but let’s say I’m creating a model for Person. Person obviously has first name, last name, age, etc. But the person also has contact info consisting of things like address line 1, address line 2, city, state, zip, country, phone 1, phone 2, etc…
Does it make more sense to create a model for Person and then list that contact information as tables in the model or to also create, say, a ContactInfo (or Address, etc) model, then associate the Person to ContactInfo through an association (Person has_one ContactInfo/Person has_one Address/Address belongs_to Person, etc)?
Which of these is a better approach and what are the benefits/drawbacks to each method?
edit: in re to j..
So with this approach, would I have to then create an Addressable model?
script/generate model Addressable
class Addressable < ActiveRecord::Base
#stuff here?
end
or is this unnecessary?
Also, would i need to add this line to the create_users.rb:
t.references :addressable, :polymorphic => true
I feel like I’m missing something, but I’m not sure what. I appreciate the help a ton, btw! Thanks!
I’d create separated tables/models for address, phone and stuff like this and would make them
polymorphic. Like this:I believe this is the best way because later you may need to add, for example, a Company model and it’ll be easy to make it
addressable.Edit
Using the
addressas example, you’d need anAddressmodel, notAddressable.And you’ll have to add
or
to your
create_addressesmigration, so you’ll have theaddressable_idandaddressable_typein theaddressestable.Let me know if you have any other doubts :]