Cambiar la declaración de selección del buscador predeterminado en Rails 3.1

Me gustaría cambiar la declaración predeterminada que usa ActiveRecord para consultar la tabla de un modelo. De forma predeterminada, consulta una tabla "cables", por ejemplo, por ...

this_cable = Cable.first

resultados en

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

Me gustaría encontrar una manera de terminar con

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

De esta manera puedo llamar a una función de base de datos y hacer que se comporte como un campo en el objeto.

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

Esto se puede lograr agregando un alcance

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

Pero me imagino que eso es un poco complicado. Me gustaría que esta columna "kml" estuviera siempre ahí, sin tener que llamar al alcance "with_kml".

¿Alguna idea?

preguntado el 08 de noviembre de 11 a las 14:11

1 Respuestas

¿Has probado usar ámbito_predeterminado para esto, o realmente desea que esto esté presente en todos sus modelos?

Algo como esto podría resolver su problema:

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

Es posible que desee cambiar eso a cables.* sin embargo, para que funcione correctamente con uniones y demás.

respondido 08 nov., 11:18

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.