Size: a a a

2021 January 21

O

Op3nyourmind in RubyRush
Или то что после else всегда должен быть конец условия? Только в этом разница?
источник

I

Integrity in RubyRush
Op3nyourmind
Не совсем понял разницу между else и elsif , точнее я понял что разницы нет никакой?
else это когда вообще ничего не подходит под условие а elsif когда условие if не подошло но ты не хочешь сразу идти в else и можешь проверить по другому условию
источник

D

Denis in RubyRush
Op3nyourmind
Не совсем понял разницу между else и elsif , точнее я понял что разницы нет никакой?
if a > b
 return
else
 return
end

if a > b
 return
elsif a < b
 return
elsif a == b
 return
else
 return
end
источник

O

Op3nyourmind in RubyRush
Integrity
else это когда вообще ничего не подходит под условие а elsif когда условие if не подошло но ты не хочешь сразу идти в else и можешь проверить по другому условию
Аа. Ну значит все верно понял. Спасибо
источник

O

Op3nyourmind in RubyRush
Denis
if a > b
 return
else
 return
end

if a > b
 return
elsif a < b
 return
elsif a == b
 return
else
 return
end
Спасибо. А телеграмм начал форматированный текст воспринимать ? Круто
источник

I

Integrity in RubyRush
Op3nyourmind
Спасибо. А телеграмм начал форматированный текст воспринимать ? Круто
да, надо добавить ``` в начале и конце такста
источник

Э

Эдем in RubyRush
Denis
if a > b
 return
else
 return
end

if a > b
 return
elsif a < b
 return
elsif a == b
 return
else
 return
end
Во втором примере лишнее условие
источник

D

Denis in RubyRush
Эдем
Во втором примере лишнее условие
Для наглядности, не более =) Там ещё можно было бы напихать чего нибудь =)
источник

D

Denis in RubyRush
Op3nyourmind
Спасибо. А телеграмм начал форматированный текст воспринимать ? Круто
Ну это как бы было в телеге, просто нужно смекалку проявить =)
источник

L

Lem in RubyRush
Kill Real
да пока решил полигон использовать удобная френдли конструкция, в общем за ночь разобрался. нужно обязательно геометрическим данным для postgis в запросах указывать SRID ( я так понимаю это параметр отправной точки для расчетов координат). Документация конечно для гема RGeo и вытекающий ну мягко говоря "не очень".

Чтобы спасти некоторым жизнь, и уделить больше времени на близких вам людей и впечатления в жизни, вот запрос:

class RoutePoint < ApplicationRecord
 belongs_to :order

 def self.g_within_polygon
   # polygon = Geo.polygon(points)
   polygon = User.last.work_area
   self.where("ST_Contains(:polygon, ST_SetSRID(ST_MakePoint(longitude, latitude), #{Geo::SRID}))", polygon: Geo.to_wkt(polygon))
 end

 # points = [
 #   [-84.39731626974567, 33.75570358345219],
 #   [-84.33139830099567, 33.86524376001825],
 #   [-84.25243406759724, 33.770545357734925],
 #   [-84.39731626974567, 33.75570358345219]
 # ]

 # coords = Geo.pairs_to_points(points)

 # User.last.update(work_area: Geo.polygon(coords))
end


Geo это класс, который я взял в статье у человека,  ссылка:
https://pganalyze.com/blog/postgis-rails-geocoder#installing-postgis

Кстати засунул я этот класс в папку config/initializers, может вы как думаете стоит в другое место вынести его?

Из postgis использую функцию ST_Contains для ограничения области поиска, но также есть функция ST_Covers, советую изучить и ту и ту.

Вот результат выполнения в консоли:

RoutePoint.g_within_polygon.first
 User Load (0.3ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT $1  [["LIMIT", 1]]
 RoutePoint Load (0.6ms)  SELECT "route_points".* FROM "route_points" WHERE (ST_Contains('srid=4326;POLYGON ((-84.39731626974567 33.75570358345219, -84.33139830099567 33.86524376001825, -84.25243406759724 33.770545357734925, -84.39731626974567 33.75570358345219))', ST_SetSRID(ST_MakePoint(longitude, latitude), 4326))) ORDER BY "route_points"."id" ASC LIMIT $1  [["LIMIT", 1]]
=> #<RoutePoint:0x00007ff8950f1d20
id: 31,
address_title: "1798 Haygood Dr NE, Atlanta, GA 30307, США",
longitude: -84.3167664,
latitude: 33.7936176,
order_id: 39,
created_at: Wed, 20 Jan 2021 23:55:38 UTC +00:00,
updated_at: Wed, 20 Jan 2021 23:55:38 UTC +00:00>
Аа, я просто тоже делал,
Только гемом geocoder.
Там можно найти bounding_box - зона покрытия (прямоуголные координаты)
И далее запросы с range в постгрес
источник

KR

Kill Real in RubyRush
Lem
Аа, я просто тоже делал,
Только гемом geocoder.
Там можно найти bounding_box - зона покрытия (прямоуголные координаты)
И далее запросы с range в постгрес
Да видел эту тему, но подумал что у нас неизвестно какие вычисления в будущем будут, и решил сразу поискать, что-то по замороченей с перспективой расширения архитектуры
источник

L

Lem in RubyRush
Kill Real
Да видел эту тему, но подумал что у нас неизвестно какие вычисления в будущем будут, и решил сразу поискать, что-то по замороченей с перспективой расширения архитектуры
В твоем случае в полигоне с любым колвом вершин найти эту точку?
источник

E

Evgeniy in RubyRush
Парни привет! Рубикоп советует использовать оператор &. в этой проверке rating && rating.to_i.positive?. Подскажите как его лучше тут применить? Спасибо!
источник

Э

Эдем in RubyRush
Если рейтинг — это строка, число или nil, то первую часть условия можно смело убрать
источник

В

Виталий in RubyRush
rating&.to_i.positive?
источник

Э

Эдем in RubyRush
Так не покатит
источник

Э

Эдем in RubyRush
(нужен второй &)
источник

KR

Kill Real in RubyRush
Lem
В твоем случае в полигоне с любым колвом вершин найти эту точку?
Да с любым, для уточнения получаается только точки имеено
источник

E

Evgeniy in RubyRush
Рейтинг это строка. Если делаю так rating&.to_i.positive?, тоже ругается
источник

Э

Эдем in RubyRush
Ну так не надо как раз
источник