2015-01-18 2 views
0

Я использую GeoCoder для запросов на основе местоположения. Метод .Near от GeoCoder добавляет расстояние & Столбец Bearing к предложению select, который полезен для предложений where и order.Rails GeoCoder изменяет предложение выбора с помощью ModelName. *

Эти столбцы прекрасны, но также добавляет текущую модель. *, Которую я пытаюсь избежать с помощью определенного списка столбцов в инструкции select.

Следующий запрос и изображение показывают дополнительные дополнения, красный - это то, что я хочу удалить, желтый добавлен GeoCoder, но я в порядке с этим.

sql = Shift.scoped 
     .select("CAST('#{region.name}' AS character(50)) as region, staffrooms.name as staffroom_name, staffrooms.staffroom_type, shifts.id, shifts.title, shifts.shift_type, shifts.status, shifts.location, shifts.uuid") 
     .visible 
     .jobs 
     .joins(:posted_shortlists) 
     .near([region.latitude, region.longitude], 50) 

    sql = sql.where("staffrooms.staffroom_type = ?", staffroom_type) if staffroom_type 
    sql = sql.reorder("staffrooms.name") 

enter image description here

Как удалить сдвиги. * Из запроса, мой текущий метод здесь, но это кажется немного хитроумный для меня и не позволяет запрос оставаться как отношение

sql = sql.gsub("shifts.*, ", "") 

ответ

0

Я нашел мой ответ here

мое решение было очистить выбрать и сбросить его в любое время после того, как метода .Near, используя следующее:

.except(:select) 
    .select("CAST('#{region.name}' AS character(50)) as region, CAST('#{region.id}' AS Integer) as region_id, staffrooms.id as staffroom_id, staffrooms.name as staffroom_name, staffrooms.staffroom_type, shifts.id, shifts.title, shifts.shift_type, shifts.status, shifts.location, shifts.uuid, shifts.comments") 

Полный пример

sql = Shift.scoped 
     .visible 
     .jobs 
     .joins(:posted_shortlists) 
     .near([region.latitude, region.longitude], 50) 
     .except(:select) 
     .select("CAST('#{region.name}' AS character(50)) as region, CAST('#{region.id}' AS Integer) as region_id, staffrooms.id as staffroom_id, staffrooms.name as staffroom_name, staffrooms.staffroom_type, shifts.id, shifts.title, shifts.shift_type, shifts.status, shifts.location, shifts.uuid, shifts.comments")