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?