0

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

4

1 に答える 1