2011-02-06 5 views
4

등 같은 찾기 방법을 사용할 때이 오류 모호한 열/레일 찾을 방법

Mysql::Error: Column 'id' in field list is ambiguous

을 받고 있어요 그래서 협회를 통해, :

모델 self.prompts.find(:all, :select => 'id')가 호출되는되는 has_many를 사용하여 MySQL은 사용되는 3 개의 테이블 모두에 'id'컬럼이 있기 때문에 여러 개의 'id'컬럼이 있다고 불평합니다.

나는 이것을보고 SQL 끝 부분에서 어떤 문제가 있는지 알았지 만 ActiveRecord 찾기 방법에서이를 해결하는 방법을 모르며 내 SQL 기능을 자신의 SQL 롤링에 사용하지 못했습니다. 질문. find 메서드를 잘 활용할 수있는 방법으로 마사지하는 방법이 있습니까?

class Actor < ActiveRecord::Base 
    has_many :acts, :dependent => :destroy 
    has_many :decisions, :through => :acts, :order => 'created_at' 
    has_many :prompts, :through => :decisions, :order => 'id' 

답변

7

당신은 당신이 선택하고자하는 ID에 대한 자세한 명시해야합니다

편집 여기

는 관련 행위자 모델 코드입니다. 예를 들어 :

 
self.prompts.find(:all, :select => 'prompts.id') #prompts is the table name 
+1

흠, 좋아, '모호한'오류를 제거있어,하지만 지금은 '알 수없는 컬럼에 대한 불평이'에서 'decisions.actor_id'어디 clause'' 두 개의 중첩 된 has_many가 아마 때문에 : 그것이 활동하고있는 협회들을 통해. – John

+0

나머지 설정이 올바르지 않다고 생각합니다. has_many 및 외부 및 기본 키에 대한 설명서를 읽으십시오. 구성에 도움이됩니다. 테이블 이름과 열 이름이 Rails 규칙을 따르지 않으면 상황이 어려워 질 수는 있지만 불가능하지는 않습니다. –

+0

여기에 게시 된 몇 가지 조언을 사용하여주의를 기울여야합니다. [http://railsforum.com/viewtopic.php?id=10890](http://railsforum.com/viewtopic.php?id=10890) 잘 작동하고있는 것 같습니다. 지금. 감사합니다. – John