2011-11-08 3 views
0

ActiveRecordがモデルのテーブルを照会するために使用する既定のステートメントを変更したいと思います。デフォルトでは、それは私はそれがRails 3.1で既定のファインダ選択ステートメントを変更する

SELECT *,askml(wkb_geometry) as kml FROM "cables" LIMIT 1 
で巻き取るための方法を見つけるしたいと思います

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

this_cable = Cable.first 

結果

によって例えば表「ケーブル」を問い合わせます

このように私はデータベース関数を呼び出すことができ、オブジェクト上のフィールドのように振る舞います。

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

関連する問題