Q:

Should a user's profile be a separate model?

I'm learning Rails by building a simple site where users can create articles and comment on those articles. I have a view which lists a user's most recent articles and comments. Now I'd like to add user 'profiles' where users can enter information like their location, age and a short biography. I'm wondering if this profile should be a separate model/resource (I already have quite a lot of fields in my user model because I'm using Authlogic and most of it's optional fields).
What are the pros and cons of using a separate resource?

A:

Pros: It simplifies each model
Cons: Managing 2 at once is slightly harder

It basically comes down to how big the user and profile are. If the user is 5 fields, and the profile 3, there is no point. But if the user is 12 fields, and the profile 20, then you definitely should.

A:

I think you'd be best served putting in a separate model.  Think about how the models correspond to database tables, and then how you read those for the various use cases your app supports.  
If a user only dips in to his actual profile once in a while but the User model is accessed frequently, you should definitely make it a separate object with a one-to-one relationship.  If the profile data is needed every time the User data is needed, you might want to stick them in the same table.  
Maybe the location is needed every time you display the user (say on a comment they left), but the biography should be a different model?  You'll have to figure out the right breakdown, but the general rule is to structure things so you don't have to pull data that isn't being used right away.

A:

I'd recommend keeping profile columns in the User model for clarity and simplicity. If you find that you're only using certain fields, only select the columns you need using :select. 
If you later find that you need a separate table for some reason (e.g. one user can have multiple profiles) it shouldn't be a lot of work to split them out.
I've made the mistake of having two tables and it didn't buy me anything but additional complexity.

