【发布时间】:2016-08-09 15:14:22
【问题描述】:
我在基于 Rails 4 的网络应用程序中构建了两个实体:
class University
belongs_to :state
end
class State
has_many :universities
end
我正在尝试创建一个查询方法,该方法返回给定州数组的大学数组。
例如:
对于州代码:WA(华盛顿)、OR(俄勒冈)、CO(科罗拉多):[WA, OR, CO],他们应该返回以下大学:
University of Washington
University of Oregon
University of Colorado
....
我写了这个范围方法,但是它不起作用(见下面的错误):
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)
}
错误信息:
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')
http 状态为 422 - 此错误引发了无法处理的实体。
我不确定在这种情况下如何使连接查询工作,或者这是否可能?感谢您的任何意见!
【问题讨论】:
标签: ruby-on-rails database inner-join