Я бы изменил ваши ассоциации на что-то вроде этого:
class User < ActiveRecord::Base
has_one :profile
class Profile < ActiveRecord::Base
belongs_to :user
belongs_to :team
class Team < ActiveRecord::Base
has_many :profiles
has_many :users, :through => :profiles
Я думаю, что проблема, с которой вы столкнулись, заключается в том, что в отношениях has_one нужно быть владельцем, а другим - владеть .. (own_to)
Тогда вы сможете найти ассоциации, используя следующее:
@user.profile
@team.users
@team.profiles
и т.д ..
Если вы хотите, чтобы у пользователя был профиль, а команда отображала его профили, измените модель на эту:
class User < ActiveRecord::Base
has_one :profile
belongs_to :team
class Profile < ActiveRecord::Base
belongs_to :user
class Team < ActiveRecord::Base
has_many :users
has_many :profiles, :through => :users
Таким образом, вы можете загрузить свою команду, ее пользователей и профили пользователей:
@team = Team.find(params[:id])
@users = @team.users
@profiles = @team.profiles
Удачи!
Для того, чтобы ваши ассоциации правильно работали с приведенным выше кодом, в ваших таблицах БД должно быть следующее:
Ваша таблица профилей должна содержать user_id в виде целого числа.
Ваша таблица пользователей должна иметь team_id в виде целого числа.
Вашему столу команд не нужны идентификаторы.
Убедитесь, что ваши миграции правильно настроили эти идентификаторы и что при создании пользователя он правильно связан с вашей командой:
@team.users << @user
Надеюсь, это поможет!