Команды пользователей rails app

Мне нужно создавать команды пользователей. Пользователь принадлежит команде (только одна команда), в команде много пользователей. Я не могу понять, как заставить пользователя создавать, присоединяться и покидать команду. Ниже приведено то, что я имею до сих пор, но я уверен, что я делаю что-то ужасно (и "newby" неправильно).

Модель пользователя:

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

модель команды

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'

модель team_relationhip

attr_accessible :team_id

belongs_to :team
belongs_to :user

validates :team_id, presence: true  

маршруты:

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

Если вы не можете сказать, что я пытался адаптировать для этой цели кое-что из учебного руководства Hartl. Что я делаю неправильно?

Я полагаю, что я понял модели, но теперь я не уверен, как заставить пользователя создать команду, уничтожить команду, присоединиться к команде или покинуть команду. Что мне нужно сделать в моделях, контроллерах и представлениях, чтобы это произошло?

Ответы на вопрос(3)

Ваш ответ на вопрос