2017-03-15 3 views
0

Ich versuche Abfrage 2 Tabellen, Anmeldeinformationen und Integrationen.Rails verbindet Abfrage mit mehreren Bedingungen

Ich möchte alle Anmeldeinformationen Datensatz WHERE user_id == current_user.id abrufen. Ich möchte auch jeden Integrationsdatensatz WHERE name == "Twitter" abrufen.

Die Abfrage direkt unter Läufe und Ausgänge [[4, "Twitter"][3,"YouTube"]]

Credential.joins(:integration).where(user_id: current_user.id).pluck(:id, :name) 

Die direkt unter Abfrage soll [4, "Twitter"] laufen und zu produzieren, sondern wird ein Fehler ausgegeben.

Credential.joins(:integration).where(user_id: current_user.id).where(integration: {name: 'Twitter'}).pluck(:id, :name) 

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "integration" 
LINE 1: ...ration_id" WHERE "credentials"."user_id" = $1 AND "integrati... 

Letztendlich versuche ich Whitelist, welche Integrationen ich im Rest des Codes verwende. Rails lehnt die Abfrage ab, wenn ich eine Pluralform im Joins-Argument .joins(:integrations) verwende.

+0

Funktioniert 'wo (Integrationen: {..})' mit dem Plural? – Iceman

+1

Wow. Das hat funktioniert! Vielen Dank! Wenn du die Lösung postest, gebe ich dir die Punkte! – HashRocketSyntax

+0

Froh, dass es funktioniert hat, eine Antwort geschrieben – Iceman

Antwort

1

Verwenden Sie die Pluralversion in Ihrer where Klausel.

where(integrations: {..}) 

Credential.joins(:integration) 
    .where(user_id: current_user.id) 
    .where(integrations: {name: 'Twitter'}) 
    .pluck(:id, :name) 
Verwandte Themen