RGeo PostGIS 多table查询
RGeo PostGIS multi-table query
以下查询作为原始 sql 运行良好,但因为它命中 2 个模型,我不确定如何在活动记录中构造它...
sql = "SELECT spots.*
FROM spots, areas
WHERE areas.area = '#{@area.area}'
AND shape && lonlat
AND ST_Contains(shape,lonlat);"
我该如何构建它?这不是连接所以...
谢谢!
您可以这样生成相同的 SQL:
Spot.from("spots, areas")
.where("areas.area = ?",@area.area)
.where("shape && lonlat")
.where("ST_Contains(shape,lonlat)")
但是这样你就没有使用 ActiveRecord 最擅长的东西,比如急切的加载和关系。
要获得相同的结果,您可以这样做:
型号中:
Spot < ActiveRecord::Base
belongs_to :area
end
Area < ActiveRecord::Base
end
以及查询:
Spot.joins(:area).where(areas: {area: @area.area})
以下查询作为原始 sql 运行良好,但因为它命中 2 个模型,我不确定如何在活动记录中构造它...
sql = "SELECT spots.*
FROM spots, areas
WHERE areas.area = '#{@area.area}'
AND shape && lonlat
AND ST_Contains(shape,lonlat);"
我该如何构建它?这不是连接所以...
谢谢!
您可以这样生成相同的 SQL:
Spot.from("spots, areas")
.where("areas.area = ?",@area.area)
.where("shape && lonlat")
.where("ST_Contains(shape,lonlat)")
但是这样你就没有使用 ActiveRecord 最擅长的东西,比如急切的加载和关系。 要获得相同的结果,您可以这样做:
型号中:
Spot < ActiveRecord::Base
belongs_to :area
end
Area < ActiveRecord::Base
end
以及查询:
Spot.joins(:area).where(areas: {area: @area.area})