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 コールバックを削除し、独自の評価を計算するメソッドをユーザー モデルに追加して、コントローラーで呼び出しました。