0

それで私は宿題の課題に取り組んでいました(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

、そしてそれで宿題を終えることができますが、それでも、コレクションループアプローチが機能しない理由については終わりがありません。

最後の質問は..子を別の親に再割り当てする場合に推奨されるアプローチはありますか(この例では、ある記事から別の記事にコメントを再割り当てします)?

4

1 に答える 1

0

これを解決するために、ループ内でデバッグして、コメントの値を確認し、実際に呼び出されていることを確認したいと思います。すべきではありません:self.comments.eachdo|コメント| ...?おそらくあなたは「それぞれ」への呼びかけを逃している

于 2012-11-18T06:36:25.803 に答える