1

我想更改 ActiveRecord 用于查询模型表的默认语句。默认情况下,它查询表“电缆”,例如...

this_cable = Cable.first

结果是

SELECT "cables".* FROM "cables" LIMIT 1

我想找到一种方法让它结束

SELECT *,askml(wkb_geometry) as kml FROM "cables" LIMIT 1

这样我就可以调用一个数据库函数并让它的行为就像对象上的一个字段。

this_cable.kml
=> "<LineString><coordinates>-73.976879999999994,40.674999999999997 -73.977029999999999,40.674779999999998 -73.977170000000001,40.674770000000002 -73.97775,40.67501</coordinates></LineString>"

这可以通过添加范围来完成

scope :with_kml, "*,askml(wkb_geometry) as kml"

但我认为这有点混乱。我希望这个“kml”列始终存在,而不必调用“with_kml”范围。

有任何想法吗?

4

1 回答 1

2

您是否尝试过为此使用default_scope,或者您是否真的希望它出现在您的所有模型上?

这样的事情可能会解决您的问题:

default_scope select("*, askml(wkb_geometry) as kml")

不过,您可能希望将其更改cables.*为使其与连接等正常工作。

于 2011-11-08T14:53:15.500 回答