Ich habe zwei in einem Rails-4-basierten Web-App gebaut Einheiten:Rails 4: Join-Abfragen mit übergeordneter Entität Tabelle, Fehler: PG :: UndefinedTable: ERROR: Fehlender FROM-Klausel Eintrag für Tabelle "heißt es:"
class University
belongs_to :state
end
class State
has_many :universities
end
Ich versuche, eine Abfrage-Methode zu erstellen, die ein Array von Universitäten für ein bestimmtes Array von Status zurückgibt.
Zum Beispiel:
Für die Staaten Code: WA (Washington), OR (Oregon), CO (Colorado): [WA, OR, CO]
, sollten sie die folgenden Universitäten zurück:
University of Washington
University of Oregon
University of Colorado
....
I haben diese Rahmen-Methode geschrieben, aber es funktioniert nicht (siehe den Fehler unten):
universities.by_value_array(params[:state_codes]) # scope method by_value_array is defined in the University model
scope :by_value_array, -> (state_codes) {
conditions = []
q = ""
state_codes.each_with_index { |code, i|
if i == 0
q = "universities.state_id = state.id and states.code = ?"
else
q += " OR universities.state_id = state.id and states.code = ?"
end
conditions.push(code.to_s)
}
conditions.insert(0, q) # prepend
joins(:state).where(conditions)
}
Fehlermeldung:
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "state"
LINE 1: ...l_id" = $1 AND (universities.state_id = state...
^
: SELECT COUNT(*) FROM "universities" INNER JOIN "states" ON "states"."id" = "universities"."state" WHERE "universities". (universities.state_id = state.id and state.code = 'WA' OR universities.state_id = state.id and state.code = 'CO')
Ein HTTP-Status von 422 - Unprocessable Einheit wurde aus diesem Fehler ausgelöst.
Ich bin mir nicht sicher, wie die Joins-Abfrage in dieser Situation funktioniert, oder ist das überhaupt möglich? Danke für jede Eingabe!