Ich habe ein Benutzermodell, ein Gruppenmodell (Cliq) und ein group_membership Modell (Cliq_Membership). Alles scheint bisher gut zu funktionieren. Ich habe es derzeit so, dass, wenn ein Benutzer eine Gruppe erstellt, sie ihn "besitzen" und wenn ein "Besitzer" die Gruppe verlässt (ihre Gruppenzugehörigkeit zerstört), wird die gesamte Gruppe zerstört. Eine Gruppe hat einen Besitzer und viele Mitglieder. Ich möchte es so machen, dass ein Benutzer beantragen muss, ein "Mitglied" zu sein. Ich möchte, dass der "Eigentümer" der einzige ist, der die Anfragen sieht und die Anfragen akzeptiert/ablehnt.Wie können Benutzer aufgefordert werden, eine Gruppenmitgliedschaft anzufordern?
Für Klarheit:
- Ich Nutzer wollen Gruppenmitglieder beantragen müssen sein
- Ich möchte Cliqs der Lage sein, Benutzer zu verlangen, um Mitglieder
- Es sollte nur der Besitzer in der Lage sein zu sehen,/accept/deny Freundanfragen
- Ich möchte, dass die Beziehung "zweiseitig/selbstreferenziell" ist; das heißt, ich will die Benutzer/Mitglied werden gezeigt als in der Gruppe enthalten ist und die Gruppe als ein anderes Mitglied mit
- Cliqs = Gruppen
Wie erreichen Sie das?
Hier ist mein Code so weit:
Modelle:
class User < ActiveRecord::Base
has_many :uploads
has_one :owned_cliq, foreign_key: 'owner_id', class_name: 'Cliq', dependent: :destroy
has_many :cliq_memberships
has_many :cliqs, through: :cliq_memberships
end
class CliqMembership < ActiveRecord::Base
belongs_to :cliq
belongs_to :user
end
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
Controller:
class CliqMembershipsController < ApplicationController
def create
#Cliq or Cliq_ID?
@cliq = Cliq.find(params[:cliq])
@cliq_membership = current_user.cliq_memberships.build(cliq: @cliq)
@cliq.members << current_user
if @cliq_membership.save
flash[:notice] = "Joined #{@cliq.name}"
else
flash[:notice] = "Not able to join Cliq."
end
redirect_to cliq_url
end
def destroy
@cliq_membership = current_user.cliq_memberships.find(params[:id])
@cliq = @cliq_membership.cliq
if @cliq.owner == current_user
@cliq.destroy
flash[:notice] = "Cliq has been deleted."
redirect_to current_user
else
@cliq_membership.destroy
flash[:notice] = "You left the Cliq."
redirect_to current_user
end
end
end
class CliqsController < ApplicationController
def show
@cliq = Cliq.find(params[:id])
end
def new
@cliq = Cliq.new(params[:id])
end
def create
@cliq = current_user.build_owned_cliq(cliq_params)
@cliq.members << current_user
if @cliq.save
redirect_to current_user
else
redirect_to new_cliq_path
end
end
def destroy
#@cliq = current_user.owned_cliq.find(params[:id])
#lash[:alert] = "Are you sure you want to delete your Cliq? Your Cliq and all of its associations will be permanently deleted."
#@cliq.destroy
#if @cliq.destroy
#redirect_to current_user
#flash[:notice] = "You deleted the Cliq."
#else
#redirect_to current_user
#set up error handler
#flash[:notice] = "Failed to delete Cliq."
#end
end
def cliq_params
params.require(:cliq).permit(:name, :cliq_id)
end
end
Wie würde ich eine Anfrage erstellen (senden)? –
Das sollte jetzt funktionieren. –