In meiner Rails 5 App erhalte ich diesen Fehler von einer Abfrage, aber ich weiß nicht, wie Sie es beheben.Rails - PG :: SyntaxError: Fehler: Unterabfrage hat zu viele Spalten
PG::SyntaxError: ERROR: subquery has too many columns
Mein Controller:
def index
@canvases = current_user.get_voted Canvas
@activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.friend_ids, owner_type: "User").or(PublicActivity::Activity.order("created_at desc").where(recipient_id: current_user.id)).or(PublicActivity::Activity.order("created_at desc").where("key = ? AND recipient_id in (?)", "canvas_product.create", @canvases)).paginate page: params[:page], per_page: 30
end
Der Fehler irgendwo in dieser Abfrage ist:
(PublicActivity::Activity.order("created_at desc").where("key = ? AND recipient_id in (?)", "canvas_product.create", @canvases))
Bei einer Vermutung ... '@ canvases' ist eine Reihe von tatsächlichen Leinwänden, und vielleicht interpretiert Rails diese nicht als IDs richtig ... versuchen, das zu ändern:' where ("key =? UND recipient_id in (?) "," Canvas_product.create ", @ canvases.map (&: id))' - wenn das funktioniert, dann weißt du, dass es das ist. –
Das war es! Danke! Gibt es irgendeine Anpassung? sollte ich tun, um @canvases einzuschränken, um IDs vor der Abfrage zu sein (um effizienter zu sein)? Danke! – yellowreign
Ich werde eine Antwort erstellen und das hinzufügen :) –