ActiveRecord verbindet Bedingung erfüllt alle Beziehungen

8

Ich habe ein Datenbankmodell wie folgt:

%Vor%

Was ich will, ist Abfrage aller posts für einen bestimmten Benutzer, für den er nicht schon gewählt hat.

Ich habe es so versucht:

%Vor%

Dabei ist 1 nur eine Beispielbenutzer-ID.

Das Problem ist, dass diese Abfrage scheinbar alle posts abruft, die mindestens eine Stimme haben, wobei user_id nicht 1 ist.
Da jedoch mehr als ein Nutzer für diese Beiträge abstimmen wird, sobald alle mehr als eine Stimme haben, erhalten alle Nutzer sofort alle Beiträge.

Ich weiß nicht, ob joins der richtige Ansatz ist, aber auf Englisch lautet meine Abfrage:

  

Gib mir alle Beiträge, bei denen keine der Stimmen eine user_id von 1 hat

Ist es möglich, nur die posts für einen Benutzer abzurufen, für den er noch nicht gewählt hat?

BEARBEITEN:

Mein Datenbankschema der obigen drei Tabellen:

Stimmen:

%Vor%

Beiträge:

%Vor%

Benutzer:

%Vor%     
Ybrin 17.07.2016, 23:39
quelle

2 Antworten

8

Wenn Sie also die vom Benutzer erstellten Posts nicht ignorieren möchten, sollte dies etwa so aussehen

Finden Sie heraus, welche Beiträge der Benutzer zuerst gewählt hat, dann die nicht gewählten.

%Vor%     
lusketeer 09.08.2016, 09:56
quelle
1

Ich habe ein Beispiel wie das, was Sie beschrieben haben, erstellt. Ich habe einen Benutzer, ID '1', und fünf Beiträge, IDs '1' - '5' erstellt. Dann habe ich Likes für die Posts '2' und '4' erstellt. Die Syntax in der anderen Antwort funktionierte nicht, sie beschwerte sich über die not . Das Folgende funktioniert, um die Beiträge (1, 3, 5) auszuwählen, die vom Benutzer '1'

nicht gemocht wurden %Vor%     
Tony 13.08.2016 01:50
quelle