레일스 활성 레코드 쿼리에 동적 순서 방법을 적용하는 데 문제가 있습니다. 필드 및 방향에 따른 순서는 요청 매개 변수에 따라 동적입니다. 그것들을 문자열로 지정할 때 모호한 필드 이름에서 벗어날 수 있습니다. 기호로 지정할 때 괜찮습니다. 동적으로이 쿼리를 심볼로 만들 수 있습니까?Rails/ActiveRecord 주문 문자열 대 기호와 관련된 문제
이 : SELECT DISTINCT "projects"."id", id AS alias_0 FROM...
에서
subject = subject.order('id desc')
결과와는 PG::AmbiguousColumn: ERROR: column reference "id" is ambiguous
오류가 있습니다.
이 사용하는 문자를 지정
는 액티브 레코드가 올바르게 모호성없이 모두 함께 넣습니다 : 그래서subject = subject.order(id: :asc)
어떻게 같은 변환하거나 동적으로이 방법을 사용할 수 있습니다 :
subject = subject.order(params[:order_by] + ' ' + params[:order_direction])
사이드 참고 : 쿼리에 다른 곳에서 발생하는 조인과 다른 복잡성이 있습니다 (여러 id
필드). 문제의 원인이 있다고 가정하고 있지만 Active Record라는 기호가 제대로 표시됩니다. 또한 위의 params 예에서 order_by
과 order_direction
은 허용 목록에 포함되므로 SQL 삽입은 문제가되지 않습니다.
이 수행하는 트릭, 감사하지만! – Ryan