#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. Отлично, это именно то, что я искал, спасибо