User モデルhas_many :commentsと Comment モデルがありbelongs_to :userます。
comment.ratings収集して設定したいuser.ratingのでafter_save、Comment モデルに呼び出すメソッドがあります。ただし、これは決して呼び出されません。
メソッドは次のとおりです。
def update_user_rating
user = User.find(self.is_about)
user.trip_rating = (Comment.find_all_by_is_about(self.is_about).collect { |comment| comment.rating }.sum) /
Comment.find_all_by_is_about(self.is_about).count
end
Rubyコードを確認したところ、コンソールで動作するので、Rubyコードではないと思います。
はい、モデルにも after_save :update_user_rating があります。
私が間違っていることを理解しようとしていますか?
編集:デバッガーに基づいて、user.trip_rating= の最初の部分が実行されていないことがわかりました。つまり、その行でやろうとしたのですが、うまくいきnextませんでしたので、その行が問題であると想定しています。ただし、Rails コンソールを再度チェックインすると、そこで動作することがわかりました。理解できない!
解決済み:好きではありませんが、問題を解決した方法は次のとおりです。after_save コールバックを削除し、独自の評価を計算するメソッドをユーザー モデルに追加して、コントローラーで呼び出しました。