我想更改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”范围。
有什么想法吗?
答案 0 :(得分:2)
您是否尝试过使用default_scope,或者您是否真的想让它出现在您的所有型号上?
这样的事情可能会解决您的问题:
default_scope select("*, askml(wkb_geometry) as kml")
您可能希望将其更改为cables.*
,以使其能够正常使用联接等。