Rails — использовать столбец self в строковом запросе sql в проблемной области

#ruby-on-rails #ruby #postgresql #geocoding

#ruby-on-rails #ruby #postgresql #геокодирование

Вопрос:

Итак, у меня есть эта проблема и область

 module GeocoordinatesHelpers
  extend ActiveSupport::Concern

  included do
    scope :within_range, -> (lat, lon, range) { where("(6371.0 * 2 * ASIN(SQRT(POWER(SIN((self.latitude - :lat) * PI() / 180 / 2), 2)   COS(self.latitude * PI() / 180) * COS(:lat * PI() / 180) * POWER(SIN((self.longitude - :lon) * PI() / 180 / 2), 2)))) <= :range", {lat: lat, lon: lon, range: range})}
  end
end
  

который мне нужно использовать в нескольких моделях

Можно ли ссылаться на столбец models, для которого вызывается область? Например, замените self биты в where на что-то, что действительно работает

По причинам я не могу просто использовать geocoder gem

Комментарии:

1. в этом случае self это будет класс, в который вы будете включать модуль

Ответ №1:

Если вам действительно нужно полное имя столбца, попробуйте изменить self на #{table_name} .

Комментарии:

1. ${table_name} ? глобальная переменная? и зачем это было бы полезно?

2. #{table_name} будет вызываться в области включенного класса. Ops.. Там есть опечатка.

3. Отлично, это именно то, что я искал, спасибо