0

所以我正在做一个家庭作业(edx.org 上的 SaaS 第 2 部分课程)。本质上,我们有两篇博客文章,每篇文章都有相关的评论。所以目标是通过创建第三篇文章将两篇文章合并为一篇。这也意味着,将前两篇文章的评论转移到第三篇文章中。

在我的代码中,我的第一种方法是.. 假设方法签名是def merge_with(other_article_id),并且self指的是第一篇文章,other_article指的是第二篇文章,并且new_article是指新创建的第三篇文章(注意,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.each 做 |comment| ...?也许您错过了对“每个”的呼叫

于 2012-11-18T06:36:25.803 回答