要回答你的問題,是的,你可以;但這不是最有效的方法。通常情況下,您將一列添加到Post
,名爲comments_count
,並且您每增加一行Comment
CRUD操作即可更新該列。
添加列:
rails g migration add_comment_count_to_post
然後在遷移中添加以下行:
add_column :posts, :comments_count, :integer, :default => 0
再就是從這裏處理它雙向的。
第一個是定製before_save
和before_destroy
的Comment
模型。
app/models/comment.rb
class Comment << ActiveRecord::Base
belongs_to :post
before_save :update_comments_count
before_destroy :update_comments_count
def update_comment_count
post.update_attribute(:comment_count, post.comments.count)
end
end
第二種方法是使用這個Rails的定製幫手:
app/models/comment.rb
class Comment << ActiveRecord::Base
belongs_to :post, :counter_cache => true
end
來源
2011-07-13 10:51:38
s84