2017-06-19 4 views
0

Hier ist eine sehr einfache Beziehung, die ich versuchen, eine Verbindung und eine where-Klausel auf zu starten. Dies funktionierte in Rails 3 gut, funktioniert aber nicht mehr auf Rails 4. Die Syntax sieht für mich alle korrekt aus. Alle Datensatzbeziehungen wie listing.seller oder seller.listings funktionieren alle wie erwartet.PG :: UndefinedTable Fehler mit zugeordneten WHERE-Klausel in Rails 4

class Listing < ActiveRecord::Base 
    belongs_to :seller, class_name: "User" 
end 

jedoch

Listing.joins(:seller).where({ seller: { id: 1 } }) 
# Or 
Listing.eager_load(:seller).where({ seller: { id: 1 } }) 

# Both result in the following error: 
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "seller" 
LINE 1: ...s" ON "users"."id" = "listings"."seller_id" WHERE "seller"."... 

Antwort

1

In der where-Klausel Sie die aktuellen Tabellennamen verwenden. Da Sie der Konvention nicht folgen, kommt dieses Problem auf.

Listing.joins(:seller).where({ users: { id: 1 } }) 
# Or 
Listing.eager_load(:seller).where({ users: { id: 1 } }) 
+0

Vielen Dank! Das hat den Trick gemacht. –

Verwandte Themen