2011-01-17 3 views
1

'has_one'관계가있는 모델에서 중첩 속성에 관한 도움이 필요합니다.ruby ​​on 레일 - 'has_one'관계에 대한 중첩 속성

모델 설문 조사 질문 1 개를 가지고 모델 질문이 1

내가

def new 
    @survey = Survey.new 
    @survey.build_question # build one question 
    @survey.question.answer.build #this part is not working 

end 

아래 코드의 '대답'을 구축 어떻게 사람이 어떻게 같은 답을 구축하는 말해 줄 수주십시오 대답 "@ survey.question.answer.build"코드가 올바르지 않습니다. 당신의 도움이

답변

2

이 아직 저장되지 이후 당신은 새로 만든 Question 인스턴스에서 답을 구축해야에 대한

많은 많은 감사.

@survey = Survey.new 
@question = @survey.build_question 
@answer = @question.build_answer 
# ... at some point in the future 
@survey.save
+0

안녕하세요, 제안을 많이 주셔서 감사하지만 '@ survey.question.build'모델 사이에 'has_one'관계가 작동하지 않는 것 같습니다. '@ survey.build_question'형식을 사용해야합니다. 그렇지 않으면 다음과 같은 오류 메시지가 나타납니다. 'undefined method'build'for nil : NilClass ' – Kim

+0

으악, 맞습니다. 내 코드를 업데이트했습니다. –

+0

만약 내가 사용하고 싶다면 --- @survey = Survey.new @question = @ survey.build_question : – Kim

1
@survey = Survey.new 
@survey.question = Question.new 
@survey.question.answer = Answer.new 
@survey.question.answer = (whatever) 
@survey.save! 

당신은 쉽게보기에 인스턴스 변수로이 액세스 할 수 당신이 그들 중 하나를 할당 할 수 있습니다 확인하려면

을 (또는 @survey.save을 당신은 예외를 표시하지 않으려면) 변수를 생성 한 후에 변수에 연결하면 연관성이 유지됩니다.

@question = @survey.question 

여러분에게 달려 있습니다.

+0

고맙습니다 :) 코드를 훨씬 명확하게 만듭니다. – Kim