Я пытаюсь выбрать все уведомления, которые 1) лежат в координатах карты, и 2) не имеют суперновости (и, следовательно, нет active_comment_relationship в таблице комментариев). Комментарии также относятся к классу. я не могу получить SQL совершенно правильно:Rails SQL-синтаксис для запроса LEFT JOIN
nelat = params[:NElatitude]
swlat = params[:SWlatitude]
nelng = params[:NElongitude]
swlng = params[:SWlongitude]
find_by_sql(" SELECT *
FROM notices
WHERE latitude < #{nelat}
AND latitude > #{swlat}
AND longitude < #{nelng}
AND longitude > #{swlng}
LEFT JOIN commentrelationships
ON notices.id = commentrelationships.commenter_id
WHERE commentrelationships.commenter_id IS NULL
LIMIT 50
; ")
notice.rb:
has_one :active_comment_relationship, class_name: "Commentrelationship",
foreign_key: "commenter_id",
dependent: :destroy
has_one :supernotice, through: :active_comment_relationship, source: :commentee
Я попробовал этот путь круглый, но он производит некоторые очень странные ошибки, я подозреваю, потому что она возвращает Комментарии с данными координатами, а не уведомлениями:
find_by_sql(" SELECT *
FROM notices
LEFT JOIN commentrelationships
ON notices.id = commentrelationships.commenter_id
WHERE commentrelationships.commenter_id IS NULL
AND latitude < #{nelat}
AND latitude > #{swlat}
AND longitude < #{nelng}
AND longitude > #{swlng}
LIMIT 50
; ")