我有一个用户模型,has_many :comments
和一个评论模型,belongs_to :user
。after_save更新belongs_to模型
我想收集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代码。
是的,我在模型中也有after_save:update_user_rating。
我想了解我在做什么错?
编辑:基于调试器,我看到user.trip_rating =的第一部分永远不会执行。这意味着我试图在该行上执行next
,但它从来没有经过,因此我假设该行是问题。然而,再次检查轨道控制台,我看到它在那里工作。我不明白!
已解答:下面是我如何解决问题,虽然我不喜欢它。我删除了after_save回调,并在用户模型中添加了一个方法来计算自己的评分,并在控制器中调用它。
我猜你是不是节省了用户的对象。在末尾输入'user.save' – Zippie 2013-04-11 16:01:14
我添加了它,但仍没有改变。它是有道理的,但谢谢。 – eytanfb 2013-04-11 16:14:43
你可以试试'user.save!',如果保存有问题就会出错 – Zippie 2013-04-11 16:18:43