2013-02-22 2 views
1

에서, 사용자와 제 모델 has_many 사용 :때 정의되지 않은 방식 오류 foreign_key 레일 3

class FaqGroup < ActiveRecord::Base 
    has_many :faqs, :foreign_key => 'group_id', :order => 'position' 

    acts_as_list 
end 

번째 모델 :

class Faq < ActiveRecord::Base 
    belongs_to :faq_group, :foreign_key => 'group_id' 

    acts_as_list :scope => :faq_group 
end 

컨트롤러 :

def new_faq 
    @group = FaqGroup.find(params[:id]) 

    @faq = @group.faqs.create(question: 'lorem', answer: 'ipsum') 

내가 부하 브라우저에서 나는 다음과 같은 오류 얻을 : 나는 새로운 관련 개체를 만들려고 할 때

undefined method `faq_group_id' for #<Faq:0xb56fcde4> 

가 그래서, 기본적으로 foreign_key 그냥 무시 도착합니다. 내가 custom : foreign_key를 포기하면 모든 것이 잘 작동한다.

또 다른 관찰 될 것이라고 내가 할 경우 :이 새로운 연관된 객체를 생성만을 foreign_key를 사용하여 문제가있는 것 같다 그래서이 작품을 좋아

@group = FaqGroup.find(params[:id]) 
@faqs = @group.faqs 

.

감사합니다.

답변

1

belongs_to association with the foreign key option을 확인하십시오.

가 언급 한 바와 같이

,

belongs_to에서 foreign key 용 -

_id "접미사". 협회에 사용되는 외부 키를 지정 기본적으로이은으로 협회의 이름을 것으로 짐작된다 ". 마찬가지로 belongs_to : favorite_person, : class_name => "Person"은 "favorite_person_id"의 ​​외래 키를 사용할 것입니다. "foreign_key : foreign_key : 사용자가 정의한 때문에

그래서 그것과 관련하여, 오류는 다음과 같습니다

class Faq < ActiveRecord::Base 
    belongs_to :faq_group, :foreign_key => 'group_id' 

이 협회는 group_id 외래 키와하지 ​​faq_group_id이 필요합니다. 기본이 아닌 다른 외부 키를 지정하려면 foreign_key 매개 변수를 사용하는 경우 : 내 이해에서

undefined method `faq_group_id' for #<Faq:0xb56fcde4> 
+0

-

는 그래서 오류입니다. 그리고 이것이 내가하는 일입니다. 기본 (faq_group_id)을 고수하고 싶다면 foreign_key 매개 변수를 전혀 변경할 필요가 없었을 것입니다. – IulianWasHere

+1

'faq가 faq_group에 속해 있다고 말하고 있기 때문에 외래 키를 그룹의 id로 연결하고 있기 때문에 이것은 적절한 연관이 아닙니다. group이 faq와 관련이없는 경우 어떻게 외래 키를 group_id로 사용할 수 있습니까? 'group'과'faq' 두 테이블 사이에 관계가 있어야합니다. 앞에서 말했듯이, 외래 키는 끝에 '_id'가 끝에 붙습니다. –