"많은"모델 객체 중 하나를 생성 할 때 일대 다 관계로 외래 키를 성공적으로 할당하는 데 어려움이 있습니다.레일즈 - 두 개의 관련 모델 객체 사이에서 항목 생성시 외부 ID 할당
더 구체적으로 ... 나는 두 가지 모델, Course
및 Section
을 가지고있는 코스has_many :sections
, 각 제belongs_to :course
. 각 속성 에는 외래 키 course_id
이 있습니다.
내가 내 create
함수를 작성할 때 자동으로 작성시 외부 키 course_id
를 할당합니다 current_course.sections.build(params[:section])
를 작성할 수 있도록 current_course
라는 헬퍼 메소드를 작성하고 싶습니다. 즉, current_course
은 클릭 한 클래스의 ID (즉, /class/1/
)를 새로 작성한 섹션의 course_id
과 동일하게 만듭니다. 나는 @current_course ||= Course.find(params[:course_id])
의 라인을 따라 시도했지만 .. 생성시 ID 오류가 계속 발생합니다. 무엇이 잘못 되었습니까? current_course
방법을 어떻게 수정합니까? 감사!
감사합니다. 사용자가 각 코스에 맞는 여러 섹션을 만들 수 있기를 기대할 수 있으므로 위의 내용이 완전히 적용될 수 있는지 확실하지 않습니다. 당신은 중첩 된 속성에 대해 언급했고 중첩 된 자원 ('/ course/1/section/2'와 같은 좋은 경로)을 생각했지만 궁극적으로 my ** Section ** 모델에 대해 외래 키를 가지고 있기 때문에 '/ section/2'를 보여줄 수 있고 id = 1로 본질적으로 연결되어 있어야합니다. 하나의 대안은 컨트롤러간에 정보를 전달하는 것입니다 : 세션, 더 좋은 방법이 있는지 궁금해하고 있습니까? – daspianist
중첩 된 속성은 중첩 된 경로와 매우 다르며, 기본적으로'Course'와 연결될'Section'을 나타내는 해시 배열을 취하는'@core.sections_attributes = '함수를 제공합니다. 컨트롤러가 얼마나 깨끗한지를 알아 보는 것이 유익하지만,': session' 저장소는 크기가 다소 제한되어 있으므로, 그것을 통과시키는 것은 일반적으로 좋은 생각이 아닙니다. – Geoff