2012-11-17 70 views
0

所以我正在做一個家庭作業任務(在edx.org上的SaaS第2部分課程)。 本質上,我們有兩篇博客文章,每篇文章都有相關的評論。所以我們的目標是通過創建第三篇文章將兩篇文章合併爲一篇文章。這也意味着,將前兩篇文章的意見轉化爲第三篇文章。ActiveRecord:通過循環收集來重新分配兒童失敗

在我的代碼,我的第一種方法是.. 假設方法簽名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

,並允許我完成我的功課,不過,它的錯誤我沒有盡頭,爲什麼收集循環方法是行不通的。

最後一個問題是...... 是否有任何推薦的方法,當涉及到將子女重新分配給另一位父母(在此示例中,重新分配來自一篇文章的評論)?

回答

0

爲了解決這個問題,我會試圖在循環內進行調試,看看註釋的價值是什麼,並確保它實際上被調用。不應該是:self.comments.each do | comment | ...?也許你錯過了「每個」的呼叫

+0

哦,男孩......我不敢相信我錯過了這樣一個小細節。是的,'.each'是失蹤的關鍵。這有點奇怪,因爲當我調試時,我覺得我正在迭代循環。 – Antony