更新belongs_to模型after_save

时间:2013-04-11 15:42:43

标签: ruby-on-rails ruby callback after-save

我的用户模型has_many :comments和评论模型belongs_to :user

我想收集comment.ratings来设置user.rating,因此我在我的评论模型中有一个after_save方法。然而,这永远不会被称为。

以下是方法:

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代码。

是的我在模型中也有post_save:update_user_rating。

我想知道我做错了什么?

编辑:基于调试器,我看到user.trip_rating =的第一部分永远不会执行。意思是我试图在那条线上做next但它从未经历过,所以我假设这条线是问题所在。然而,再次检查rails控制台,我看到它在那里工作。我不明白!

已解决:这是我解决问题的方法,虽然我不喜欢它。我删除了after_save回调并向用户模型添加了一个方法来计算自己的评级,并在控制器中调用它。

1 个答案:

答案 0 :(得分:0)

可能正在调用您的update_user_rating,但该方法中的某些行失败。

尝试 user = User.find(self.user_id)user = User.find_by_is_about(self.is_about)