それで私は宿題の課題に取り組んでいました(edx.orgのSaaSパート2コース)。基本的に、2つのブログ記事があり、各記事には関連するコメントがあります。したがって、目標は、3番目の記事を作成して2つの記事を1つに結合することです。つまり、最初の2つの記事から3番目の記事にコメントを持ち越すことも意味します。
私のコードでは、私の最初のアプローチは..メソッドシグネチャがdef merge_with(other_article_id)
であり、self
最初の記事をother_article
参照し、2番目の記事をnew_article
参照し、新しく作成された3番目の記事を参照すると仮定します(new_article
主キーが割り当てられてすでに保存されていることに注意してください)
self.comments do |comment|
new_article.comments << comment
end
other_article.comments do |comment|
new_article.comments << comment
end
new_article.save
debugger
デバッガーではe new_article.comments
、そうすると空になります[]
が、なぜそうなるのか非常に戸惑います。
現在の回避策は
new_article.comments = self.comments + other_article.comments
、そしてそれで宿題を終えることができますが、それでも、コレクションループアプローチが機能しない理由については終わりがありません。
最後の質問は..子を別の親に再割り当てする場合に推奨されるアプローチはありますか(この例では、ある記事から別の記事にコメントを再割り当てします)?