假设我有一个处理 Posts 和 Comment 对象的 Rails 应用程序。一个帖子has_many
评论和每个评论belongs_to
一个帖子。
每个评论都有一个word_count
属性。Post 对象有一个average_comment_word_count
属性,它是每个 Comment 的平均值word_count
。
第一个问题是如果 Post 对象被异步修改(添加评论会影响平均字数),我应该在什么时候重新计算属性?什么时候返回对象?或者每次添加新评论时?它是否进入评论或发布帮助方法?哪个控制器函数应该调用这个方法?
此外,当我包含以下 Post 辅助方法时,我得到一个以 JSON 形式返回的 NULL 值。
def average_word_count
@average_word_count = 0
# current_user returns the current user object
# user has_many posts and each post belongs_to a user
current_user.posts.find(params[:id]).comments.each do |comment|
@average_word_count += comment.word_count / current_user.posts.find(params[:id]).comments.count
end
@average_word_count
end