と を扱う Rails アプリがあるとPosts
しComments
ます。投稿has_many
コメントと各コメントbelongs_to
投稿。
各コメントにはword_count property
. Post オブジェクトには、average_comment_word_count
各コメントの平均であるプロパティがありますword_count
。
DELETE
特定のコメントに対してリクエストを送信すると、アプリはaverage_comment_word_count
パラメーターを再計算する必要があります。私がそれがうまくいくと思った方法は次のようなものです:
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :post
after_destroy :update_post_average_word_count
def update_post_average_word_count
post_average_word_count = 0
post.comments.each do |comment|
post_average_word_count = post_average_word_count + comment.word_count
end
post_average_word_count / post.comments.count
post.update_attributes average_word_count: post_average_word_count
end
ただし、アプリが問題の投稿への参照を見つけることができないため、データベースエラーが発生します(コメントがなくなったため、ここでホーマーシンプソンをキューに入れます)
これを達成するための別の方法はありますか?