Класс нуждается в использовании EWKB
в различных действиях контроллера, таким образом, определяется:Рельсов: Назначить константу, которая может быть использована во всех контроллерах
def EWKB
EWKB = RGeo::WKRep::WKBGenerator.new(:type_format => :ewkb, :emit_ewkb_srid => true, :hex_format => true)
end
def self.containing_latlon(lat, lon, polygon)
ewkb = EWKB.generate(FACTORY.point(lon, lat).projection)
where("ST_Intersects(polygon, ST_GeomFromEWKB(E'\\\\x#{ewkb}'))")
end
В приведенном выше определении, возвращает syntax error: dynamic constant assignment
. Вместо него я определил
def EWKB
RGeo::WKRep::WKBGenerator.new(:type_format => :ewkb, :emit_ewkb_srid => true, :hex_format => true)
end
и ошибка исчезает. Поскольку второй метод должен ссылаться на него, я не уверен, как/если рубин будет обрабатывать этот конструктор, как
def self.containing_latlon(lat, lon, polygon)
EWKB = RGeo::WKRep::WKBGenerator.new(:type_format => :ewkb, :emit_ewkb_srid => true, :hex_format => true)
ewkb = EWKB.generate(FACTORY.point(lon, lat).projection)
where("ST_Intersects(polygon, ST_GeomFromEWKB(E'\\\\x#{ewkb}'))")
end
приводит к тому же месту