rails models for address books (company, person, address)
I want to create address-book-like set of models to represent company, person, location, etc. This looks like very typical address book, I wonder if somebody did it already with ruby on rails 3. The question appeared not (only) because of my laziness, but also because "best practice" approach is usually well-developed, have fewer pitfalls, etc. Currently I think about following models/fields:

**Company:**

 - name
 - has_many :persons
 - has_many :locations
 - has_many :urls, :through => :urlcatalog

 the reason to have URL catalog is a possibility to assign notes to URL

**Person:**

 - name _maybe split to first-middle-last_
 - phone
 - has_one :location
 - has_many :emails :through => :emailcatalog

 the reason to have email catalog is the same as above: one can assign
"private", "office" labels to it.  many phones can be organized this way as well.

**Location**

 - address _optional_
 - has_one :city
 - has_one :country

 city or country should be present

**City**

 - name
 - has_one :country

**Country**

 - name

any comments on this concept, thoughts, working examples, etc are welcome!
rails models for address books (company, person, address)
===

I want to create address-book-like set of models to represent company, person, location, etc. This looks like very typical address book, I wonder if somebody did it already with ruby on rails 3. The question appeared not (only) because of my laziness, but also because "best practice" approach is usually well-developed, have fewer pitfalls, etc. Currently I think about following models/fields:

**Company:**

 - name
 - has_many :persons
 - has_many :locations
 - has_many :urls, :through => :urlcatalog

 the reason to have URL catalog is a possibility to assign notes to URL

**Person:**

 - name _maybe split to first-middle-last_
 - phone
 - has_one :location
 - has_many :emails :through => :emailcatalog

 the reason to have email catalog is the same as above: one can assign
"private", "office" labels to it.  many phones can be organized this way as well.

**Location**

 - address _optional_
 - has_one :city
 - has_one :country

 city or country should be present

**City**

 - name
 - has_one :country

**Country**

 - name

any comments on this concept, thoughts, working examples, etc are welcome!