Benutzerteams Schienen App

Ich muss Benutzerteams erstellen. Ein Benutzer gehört zu einem Team (nur ein Team). Ein Team hat viele Benutzer. Ich kann nicht herausfinden, wie ich einen Benutzer dazu bringen kann, ein Team zu erstellen, ihm beizutreten und es zu verlassen. Unten ist, was ich bisher habe, aber ich bin sicher, ich mache etwas schreckliches (und "neu" falsch).

Benutzermodell:

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

Teammodell

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_Beziehungsmodell

attr_accessible :team_id

belongs_to :team
belongs_to :user

validates :team_id, presence: true  

Routen:

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

Wenn Sie nicht sagen können, dass ich versucht habe, einige der Inhalte von Hartls Tutorial für diesen Zweck anzupassen. Was mache ich falsch?

Ich glaube, ich habe die Modelle herausgefunden, aber jetzt bin ich nicht sicher, wie ich einen Benutzer dazu bringen kann, ein Team zu erstellen, ein Team zu zerstören, einem Team beizutreten oder ein Team zu verlassen. Was muss ich in den Modellen, Controllern und Ansichten tun, um dies zu erreichen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage