2013-01-01 60 views
0

我應該在視圖中編寫這樣的代碼嗎?如何顯示兒童模型記錄的數量?

<%= @ childrens.count%>

控制器

@children = Parent.children
@children_count = @ children.count

視圖

<%= @ children_count%>

或我應該添加稱爲在父表 '計數' 一列,每次用戶創建新的CommunityTopic記錄,我應該重新計算記錄數並將數字保存到「count」列嗎?同時,當創建新的CommunityTopic時,我想更新父表的'at_modified(TimeStamp)'。

回答

2

您應該在控制器中執行數據庫請求,而不是在視圖中執行。在你看來

@children_count = Parent.children.count 

,然後顯示@children: 在你的情況,數着孩子們可以做像這樣

<%= @children_count %> 

順便說一句,檢查此鏈接:http://web.archive.org/web/20100210204319/http://blog.hasmanythrough.com/2008/2/27/count-length-size它會給你額外的有關何時使用的信息countsizelength

+0

感謝您的建議。那麼把名爲'count'的列添加到父表中呢?按兒童記錄的數量排序不是更快嗎? – MKK

+0

我不這麼認爲,首先我不知道你能如何處理這個問題:「count」會出現在每一條記錄中,所以你會更新哪一個?基本上,你將不得不在db上執行額外的寫入請求,我猜,每次...不太好。僅供參考,「計數」(如上面的鏈接中所述)會在數據庫上創建一個COUNT請求,並避免將所有的孩子加載到內存中,因此它的功能非常好,效率也很高。 – Raindal

+0

感謝您分享您的知識。我決定使用count。非常感謝! – MKK