使用PostgreSQL函数在ruby / rails中进行INSERT和UPDATE

时间:2013-05-23 19:05:06

标签: ruby-on-rails-3 activerecord postgis squeel rgeo

我正在使用activerecord-postgis-adapter并在面向地理的应用程序中使用squeel。使用基于查找的各种查询获取数据以及哪里工作正常和吱吱声允许我使用PostgreSQL / PostGIS函数基于空间函数和数据类型进行查询。

但是,在执行INSERT和UPDATE时,我无法弄清楚如何访问类似的函数。说我想做一些事情:

UPDATE object SET raster = ST_AsRaster(ST_Buffer(ST_Point(1,5),10),150, 150, '2BUI') 
where id = 12345;

我怎么能执行这样的查询?除了SELECT之外,Squeel似乎甚至不支持其他查询。

在完美的世界中,我甚至希望在UPDATE查询中使用时自动转换Rgeo的数据类型,就像查询的位置一样。

我知道我可以回到

  

的ActiveRecord :: Base.connection.execute

,但宁愿避免这种情况,除非有人告诉我这是唯一的方法。

-ra

1 个答案:

答案 0 :(得分:0)

您可以为每个正在使用的模型创建与数据库的连接。您可以运行的一种方法是select_value方法,还有其他方法:

sql = "UPDATE object SET raster = ST_AsRaster(ST_Buffer(ST_Point(1,5),10),150, 150, '2BUI') where id = 12345;"
conn = ModelName.connection
conn.select_value(sql)

应该运行你的命令

请参阅Daniel Azuma的这篇文章,了解有关此问题的更多信息:http://blog.daniel-azuma.com/archives/216

您可以想象将此类代码放入迁移中。事实上,这可能是最好的做法。