2011-11-08 32 views
0

我想更改ActiveRecord用來查詢模型表的默認語句。默認情況下,它通過查詢...更改Rails 3.1中的默認查找器選擇語句

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」範圍。

任何想法?

回答

1

您是否嘗試過使用default_scope來做這件事,或者您是否真的想讓它在您的所有模型中出現?

像這樣的東西可能會解決你的問題:

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

您可能要改變,要cables.*它才能正常工作與連接和這樣的,雖然。

+0

就是這樣,謝謝!將在電纜上做。*也。 – frugardc