Ich habe Gruppen von Benutzern. Ein Benutzer erstellt eine Gruppe und ist der Eigentümer. Sie können Anfragen annehmen/ablehnen (was gut funktioniert), Gruppen erstellen (funktioniert auch) und ich möchte, dass sie Gruppenmitglieder löschen können (was nicht funktioniert). Aus irgendeinem Grund kann der Besitzer der Gruppe nur aus der Gruppe gelöscht werden.Wie man eine has_many: durch die Verbindung von ausgewählten Benutzer
Wie richte ich die Controller-Aktion/Ansicht ein, damit der Besitzer Gruppenmitglieder löschen kann?
P.S. Ich möchte dafür kein Autorisierungssystem verwenden. Es sollte einfach genug sein, nur in der Steuerung zu tun. Ich muss nur ein Gruppenmitglied löschen können. Gruppen = Cliqs. Ich habe keine Mitgliedschaften zu einer verschachtelten Ressource von Gruppen gemacht.
Der Fehler: Konnte CliqMembership mit 'ID' = 2 nicht finden [WHERE cliq_memberships
. ? user_id
=]
Hier ist mein Controller-Aktion:
def destroy
@cliq = Cliq.find_by(params[:cliq_id])
@cliq_membership = @cliq.cliq_memberships.find(params[:id])
@cliq_membership.destroy
redirect_to cliqs_path
end
Meine Modelle:
class Cliq < ActiveRecord::Base
belongs_to :owner, class_name: 'User'
has_many :cliq_memberships, dependent: :destroy
has_many :members, through: :cliq_memberships, source: :user
end
class User < ActiveRecord::Base
has_one :owned_cliq, foreign_key: 'owner_id', class_name: 'Cliq', dependent: :destroy
has_many :cliq_memberships, dependent: :destroy
has_many :cliqs, through: :cliq_memberships
end
My View Controller-Aktion:
def show
@cliq = Cliq.find(params[:id])
@cliq_owner = @cliq.owner
@cliq_members = @cliq.members
@pending_members = @cliq.pending_members
@cliq_requests = @cliq.cliq_requests #(find a way to show all incoming requests)
@cliq_memberships = CliqMembership.all
end
Und mein "Ist" Ansicht:
<div>
<% @cliq.members.each do |member| %>
<ul><%= link_to member.username, user_path(member) %></ul>
<% end %>
<% @cliq.cliq_memberships.each do |cliq_membership| %>
(<%= link_to "Delete Member", cliq_membership, :method => :delete %>)
<% end %>
</div>
Log:
Cliq Load (0.0ms) SELECT `cliqs`.* FROM `cliqs` LIMIT 1
CliqMembership Load (0.5ms) SELECT `cliq_memberships`.* FROM `cliq_memberships` WHERE `cliq_memberships`.`cliq_id` = 4 AND `cliq_memberships`.`id` = 9 LIMIT 1
Completed 404 Not Found in 18ms (ActiveRecord: 0.5ms)
ActiveRecord::RecordNotFound (Couldn't find CliqMembership with 'id'=9 [WHERE `cliq_memberships`.`cliq_id` = ?]):
app/controllers/cliq_memberships_controller.rb:44:in `destroy'
Wenn es ausfällt, ist ein Fehler irgendwo angemeldet? Was ist die Nachricht? Wenn Sie nicht sicher sind, versuchen Sie, 'destroy' zu' destroy! 'Zu ändern. –
Ich werde die Frage aktualisieren, um die Fehlermeldung mit einzuschließen. –
Danke, würden Sie bitte auch das Bit aus Ihrer 'log/development.log' Datei hinzufügen, die die DELETE Anfrage abdeckt. –