doc
은 많은 articles
과 을 가질 수 있습니다.은 다수가 edits
입니다.레일 : 관계 간의 차이를 위해 구축
@doc.articles
까지 각 article
에 대해 edit
을 만들고 싶습니다. 이 코드는 첫 번째 빌드에서 작동합니다 (즉, edits
이없는 경우).
def editing
@doc = Doc.find(params[:id])
unbuilt = @doc.articles - @doc.edits
unbuilt.reverse.each do |article|
@doc.edits.build(:body => article.body, :article_id => article.id, :doc_id => @doc.id)
end
end
그러나 edits
이미 그 edits
유지하고 여전히 하나의 article
가 변경된 경우 너무 많은 edits
일부 중복와 함께 끝나는 @doc.articles
총 세우겠다 존재하는 경우.
나는 (의사에) 모두 edits
과의 articles
대답에 존재 :article_id
에 대해 어떤 조건을 넣어하려면 :
unbuilt = @doc.articles - @doc.edits
unbuilt.where('article_id not in (?)', @doc.edits).reverse.each do |article|
@doc.edits.build(...)
end
어떤 도움이 우수 할 것입니다! 정말 고맙습니다. 당신은 여기에서 뭔가 이상한 일을
'build'는 오직 has_one 관계에만 사용되었습니다. 당신은 그 문서가 has_many를 편집한다고 말했고, 어떻게 편집을 위해'@ doc.edits.create (..) '가 되어야만합니까? Thanks –
'build'는 잘 작동합니다 나를위한이 사건. –