2017-03-27 4 views
0

이 연결의 문제점은 무엇입니까?ActiveRecord :: HasManyThroughCantAssociateThroughHasOneOrManyReflection : 연결 오류를 수정할 수 없습니다.

내 협회는 다음과 같습니다

class Quote < ApplicationRecord 
    has_many :language_pairs 
end 

class LanguagePair < ApplicationRecord 
    belongs_to :quote 
    belongs_to :w_flow 
    has_many :w_flow_steps, through: :w_flow 
end 

class WFlow < ApplicationRecord 
    has_many :language_pairs 
    has_many :w_flow_steps 
end 

class WFlowStep < ApplicationRecord 
belongs_to :w_flow 
end 

난 실행하면

q=Quote.find(1) 
q.language_pairs.create!(source_language:'French - EU', w_flow_id: 1) 

나는 다음과 같은 오류가 있습니다

액티브 :: HasManyThroughCantAssociateThroughHasOneOrManyReflection : 연결을 수정할 수 없습니다 'LanguagePair 번호의 w_flow_steps'때문에를 소스 리플렉션 클래스 'WFlowStep'은 has_many를 통해 'WFlow'에 연결됩니다. 특정 Quote와 관련된 LanguagePair을 만들려면

+0

당신이 수행 할 작업 무효 인 경우 예외가 발생합니다 당신이 create!을 사용하고 있습니다 :

? 'id' = 1로'Quote'와 연관된'language_pairs'를 만드십시오. –

+0

해당 예외 클래스 이름은 .. – Ruslan

답변

0

먼저 당신은 당신이 연관 할 Quote을 얻을 필요가 :

다음
q = Quote.find(1) 

당신이 통과하는의 작성 방법과 변수 당신의 LanguagePair :

그리고 레일스는 관계에주의를 기울일 것입니다. 레코드가

+0

네, 하나의 해결책입니다. Actaully q.language_pairs.create의 문제를 알고 싶었다. (source_language : 'French-EU', w_flow_id : 1) –

+0

'q' 인스턴스에서'language_pair'를 만들고 싶습니까? –

+0

예, q.language_pairs.create를 할 수없는 이유를 설명해주십시오! –