Equipos de aplicación de rieles de usuarios.

Necesito crear equipos de usuarios. Un usuario pertenece a un equipo (solo un equipo) un equipo tiene muchos usuarios. No puedo descubrir cómo hacer que un usuario pueda crear, unirse y dejar un equipo. A continuación se muestra lo que tengo hasta ahora, pero estoy seguro de que estoy haciendo algo terriblemente mal (y "newby").

Modelo de usuario:

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 equipo

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 de relación de equipo

attr_accessible :team_id

belongs_to :team
belongs_to :user

validates :team_id, presence: true  

rutas:

  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 %>

Si no puedes decir que estaba tratando de adaptar algo de lo que está en el tutorial de Hartl para este propósito. ¿Qué estoy haciendo mal?

Creo que me he dado cuenta de los modelos, pero ahora no estoy seguro de cómo hacer que un usuario cree un equipo, destruya un equipo, se una a un equipo o abandone un equipo. ¿Qué tengo que hacer en los modelos, controladores y vistas para que esto suceda?

Respuestas a la pregunta(3)

Su respuesta a la pregunta