Firstly, I think you'll find that the plural of person is people. Therefore
User can have many Persons
Should be
If you don't follow conventions you'll get into a twist.
Now if you introduce an organisation model then you can have
person belongs_to organisation
organisation has_many people
The person belongs_to organisation relationship is only enforced if you declare validations, so by simply introducing an organisation_id into the person table and declaring the belongs_to declaration you are NOT forcing a person to belong_to an organisation. You must obviously also take care to allow null values in the migration (, null: true)
Consider the following
org = Organisation.where(:name => "Acme")
org.people
You will see only people that belong_to the "Acme" organisation
You could also set up a scope in the Person model to find private_people (Note private is a reserved term shence private_people rather than just provate) by searching for people where organisation is null or blank?
Because scopes are chainable this would also allow you to do user.people.private_people
Or even better you could define a user as having many private people by using :condtitions
What you want and what you need are too often not the same thing!
When your head is hurting from trying to solve a problem, stop standing on it. When you are the right way up you will see the problem differently and you just might find the solution.
(Quote by me 15th July 2009)