在我的计划中,我有一个模型,卡路里,它取一个人吃的东西,并给他们一点总和。在计算每天营养信息的那个点之后,我想更新“积分”。用户模型中的变量。
我在卡路里模型中的代码是
before_save :calculate_points
def calculate_points
# snipped calculations
User.where(user_id).first.point_calculation
end
在用户模型中,我有
def point_calculation
self.points = Calorie.where(user_id: id).sum(:points)
end
我通过创建一个回调before_save测试了point_calculation模型,并且在那里工作正常。但是在每次新Calorie条目之后更新更有意义,而不是用户更新其设置。有什么建议?我错过了什么?
感谢您的帮助。
答案 0 :(得分:2)
我假设你的卡路里模型与用户有一个has_one关系,而用户有很多卡路里。
在卡路里模型中:
after_save :update_user_points
def update_user_points
self.user.update_calorie_points!
end
在用户模型中:
def update_calorie_points!
self.update_column(:points, self.calories.sum(:points))
end