나는 MySQL에서보다 철저하고 Rails에 덜 우호적 인 PostgreSQL으로 전환하려고 시도하고 있습니다.주문하려고 할 때 ActiveRecord/Arel 쿼리가 이상한 것으로 해결됨
나는이 재미있는 수수께끼 실행 해요 :
irb(main):015:0> puts w.to_sql
SELECT DISTINCT ON (vendors.id) vendors.*
FROM "vendors"
INNER JOIN "locations" ON "locations"."locatable_id" = "vendors"."id"
AND "locations"."locatable_type" = 'Vendor'
WHERE (locations.latitude IS NOT NULL AND locations.longitude IS NOT NULL)
하지만를 ...
irb(main):017:0> puts w.order('vendors.id').to_sql
SELECT * FROM (
SELECT DISTINCT ON (vendors.id) vendors.*
FROM "vendors"
INNER JOIN "locations" ON "locations"."locatable_id" = "vendors"."id"
AND "locations"."locatable_type" = 'Vendor'
WHERE (locations.latitude IS NOT NULL AND locations.longitude IS NOT NULL)
) AS id_list ORDER BY id_list.alias_0
이 단지 유효한 PostgreSQL의 쿼리와 잘 ORDER BY vendors.id
작품을 추가하는 사실에도 불구하고. 그냥 추가하는 대신, 뭔가 재미있는 일을하고 하루의 끝에서 잘못된 쿼리를 생성합니다.
ActiveRecord::StatementInvalid: PGError: ERROR: column id_list.alias_0 does not exist
LINE 1: ...tions.longitude IS NOT NULL)) AS id_list ORDER BY id_list.al...
어떤 단서를 봐야합니까?