The relationship between you and your user and athlete model is essentially a has_and_belongs_to_many (HABTM) relationship. Turning back and forth, it seems you are embarrassed that the best way to create this relationship.
A good place to start reading is in the documentation for ActiveRecord associations, in particular the documentation for HABTM relationships .
You model setup is fine. Now that you have your HABTM relationship setup, here's what you can do. Suppose your Athlete and User model is very simple and has nothing but the name attribute, which is a string. Now you can do this code (this is console output from the rails console):
User.create(:name => "Jeff") usr = User.first => #<User id: 1, name: "Jeff"> usr.athletes => [] atl = usr.athletes.create(:name => "Mike") => #<Athlete id: 1, name: "Mike">
The above line will create a user named Mike and will automatically create a relationship record with the corresponding attributes to link them. So if you call this:
usr.athletes => [#<Athlete id: 1, name: "Mike">]
Now, if you want to allow the user to determine what the relationship between himself and the athlete is when creating the athlete, you can configure your relationship class to have a relation field of type string , and when creating relationships (as I just showed above), you can do something like that:
rel = usr.relationships.where(:user_id => usr.id, :athlete_id => atl.id).first => #<Relationship id: 1, user_id: 1, athlete_id: 2, :relation => nil> rel.relation = "Friend" rel.save => #<Relationship id: 1, user_id: 1, athlete_id: 2, :relation => "Friend">
Hope this is more helpful than my original answer. Let me know if you have any questions. And definitely be sure to check out the ActiveRecord Associations documentation mentioned above.