Equipes de usuários administram o app

Eu preciso criar equipes de usuários. Um usuário pertence a uma equipe (apenas uma equipe) e uma equipe possui muitos usuários. Não consigo descobrir como fazer com que um usuário possa criar, participar e sair de um time. Abaixo está o que eu tenho até agora, mas tenho certeza que estou fazendo algo terrivelmente (e "newby" errado).

Modelo do Usuário:

belongs_to :teams, dependent: :destroy

def team_member?(team)
    team_relationships.find_by_team_id(team.id)
end

def join!(team)
    team_relationships.create!(team_id: team.id)
end  

def unjoin!(team)
    team_relationships.find_by_team_id(team.id).destroy
end

modelo de equipe

has_many :users, through: :team_relationships, dependent: :destroy

attr_accessible :team_name, :team_id

validates :user_id, presence: true
validates :team_name, presence: true, length: { maximum: 140 }

default_scope order: 'teams.created_at DESC'

modelo team_relationship

attr_accessible :team_id

belongs_to :team
belongs_to :user

validates :team_id, presence: true  

rotas:

  resources :teams do
    member do
      get 'join'
      get 'leave'
    end
  end

teams_controller:

def join
  @team = Team.find params[:team_id]
  current_user.update_attribute(:team_id, @team.id)
  redirect_to @user
end

def leave
  @team = Team.find params[:id]
  current_user.update_attribute(:team_id, nil)
  redirect_to @user
end

_join_team.html.erb

<%= form_for(current_user.team_relationships.build(team_id: @team_id),
             remote: true) do |f| %>
  <div><%= f.hidden_field :team_id %></div>
  <%= f.submit "Join", class: "btn btn-large btn-primary" %>
<% end %>

_unjoin_team.html.erb

<%= form_for(current_user.team_relationships.find_by_team_id(@team_id),
         html: { method: :delete }) do |f| %>
  <%= f.submit "Leave Team", class: "btn btn-large" %>
<% end %>

Se você não pode dizer que eu estava tentando adaptar um pouco do que está no tutorial de Hartl para esse propósito. O que estou fazendo de errado?

Acredito ter descoberto os modelos, mas agora não sei como fazer com que um usuário crie uma equipe, destrua um time, participe de um time ou saia de um time. O que preciso fazer nos modelos, controladores e visualizações para que isso aconteça?

questionAnswers(3)

yourAnswerToTheQuestion