이것은 매우 기본적인 질문입니다. 나는 루비를 처음 사용하기 때문에 약간의 도움을 주시면 감사하겠습니다.Ruby ActiveRecord 2 레벨 join
내 데이터베이스, 소스, SourceType 및 피드에 3 개의 테이블이 있습니다. 모든 소스는 SourceType에 속하며 Every Feed는 소스에 속합니다. 이들의 기본 키는 SourceID, 유형 ID를하고
내 액티브 레코드 클래스는 FeedID : 나는 소스와 SOURCETYPE에서 SourceFeed, 물건에서 물건을 선택하려고
class SourceFeed < ActiveRecord::Base
self.table_name = "SourceFeed"
self.primary_key = "FeedID"
belongs_to :Source,
:foreign_key => "SourceID",
:class_name => "Source",
:include => "SourceType"
end
class Source < ActiveRecord::Base
self.table_name = "Source"
self.primary_key = "SourceID"
has_many :SourceFeeds,
:primary_key => "SourceID",
:class_name => "SourceFeed"
belongs_to :SourceType,
:foreign_key => "TypeID",
:class_name => "SourceType"
end
class SourceType < ActiveRecord::Base
self.table_name = "SourceType"
self.primary_key = "TypeID"
has_many :Source,
:primary_key => "TypeID",
:class_name => "Source"
end
. 여기에 쿼리 :
feed = SourceFeed.select("SourceFeed.FeedID, Source.Name as SourceName, SourceType.Name as SourceType").joins(:Source, :SourceType).where(:FeedID => FeedID).first
조인에서 내가 그것을 제거하면 나는 Association named 'SourceType' was not found; perhaps you misspelled it?
오류
을 얻고, 나는 Unknown column 'SourceType.Name' in 'field list'
오류가 발생합니다.
옳은 방법은 무엇입니까?
감사
PS : 내 데이터베이스 명명 규칙 활동 기록을 따르지 않는,하지만 난 기존 DB 함께 일하고 있음을 변경할 수 없습니다.
덕분에 :) 두 번째 조인은'joins ("JOIN SourceType ON SourceType.TypeID = Source.TypeID")' – applechief