2013-07-24 1 views
0

다음 '제출'모델이 있습니다.sunspot - 색인 생성 has_one 연관

class Submission < ActiveRecord::Base 
    self.table_name = "SUBMISSION" 
    self.primary_key = "SUB_ID" 

    has_one :publication,    :foreign_key => "PUB_SUBMISSION_FK", :dependent => :destroy 
    has_one :refpublication,   :through => :publication 

    belongs_to :submitter, :class_name => "Person", :foreign_key => "SUB_SUBMITTER_FK" 


    #*************************************************************************************** 
    #Solr searchable attributes 
    #*************************************************************************************** 

searchable do 

    text :publication_PUB_REF_ID do 
    publication.PUB_REF_ID 
    end 

    text :submitter_PER_NAME do 
    submitter.PER_NAME 
    end 

    text :SUB_OID, :boost => 5 
    text :SUB_ASSAY_TYPE 

end 

end #end of submission class 

나는 레이크 태양 흑점을 실행하면 : 색인화, 내가

레이크 중단 얻을! 정의되지 않은 메소드 'PUB_REF_ID'for nil : NilClass.

위의 코드에 무엇이 잘못되었는지 알 수 없습니다. `PUB_REF_ID '는'발행물 '테이블의 필드입니다 'has_one '연관을 인덱싱하는 방식에 문제가 있습니까?

가 당신의 도움이 아주 많이 감사합니다 :)

답변

1

솔루션 :

를 찾을 수 없음 모든 제출 내 '간행물'테이블의 행을했다.

대신 :

여기 내가 사용하는 솔루션입니다

text :publication_PUB_REF_ID do 
    publication.PUB_REF_ID 
    end 

내가 사용이 다른 사람 :)

에 도움이 될 수

text :publication_PUB_REF_ID do 
     publication.nil?? '' : (publication.PUB_REF_ID.nil?? '' : publication.PUB_REF_ID) 
    end 

희망을