2009-11-11 7 views
7

내 ActiveRecord 모델에 다음 줄이 있습니다.PostgreSQL, Rails 및 : order => 문제

class Record < ActiveRecord::Base 
    has_many :users, :through => :record_users, :uniq => true, :order => "record_users.index ASC" 

이 옵션은 record_users 모델에서 인덱스 필드를 사용하여 정렬하는 방식으로 record.users를 읽을 수 있도록하기위한 것입니다.

문제는 PostgreSQL에서 다음 오류와 함께 실패한다는 것입니다.

ActionView::TemplateError (PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list 

작동하도록 명령문을 수정하는 방법이 있습니까?

+0

생성 된 SQL을 게시 할 수 있습니까? –

답변

10

ActiveRecord에서 버그라고 부를 수 있습니다. PosgreSQL은 MySQL보다 약간 제한적입니다. 대신 다음과 같이 연결을 설정하여 액티브을 도울 수 있습니다

class Record < ActiveRecord::Base 
    has_many :users, 
    :through => :record_users, 
    :select => 'DISTINCT users.*, record_users.index', 
    :order => "record_users.index ASC" 
+0

그럴 수 있습니다. MySQL은 받아들이는 것에있어 좀 더 관대하고 비표준입니다. – MkV

+0

나는 그것을 얻지 못한다 - 나의 해결책에 위의 무엇이 위인가? 나는 내 자신의 프로젝트에서 Postgres를 사용하고 있기 때문에 알고 싶다.) –

+0

캐스퍼, 나는 제임스가 그것이 나쁜 해결책이라고 말하고 있다고 생각하지 않는다 ;-) 또한, 오타가있는 것인가? - DISTINCT? – cmaughan

2

그냥 GitHub의에 레일의 이슈 트래커에이 문제를 게시 (등대 표에서 복사 그래서 우리는 ..이 유효하지 않은 것으로 표시하고 다시 가져올 수) :

https://github.com/rails/rails/issues/520

이 정중하게 고정 할 경우 홍보! :)