3

在我的程序中,我有一个模型,卡路里,它会记录一个人吃的东西并给他们一个总分。在为每天的营养信息计算点值之后,我想更新用户模型中的“点”变量。

我在卡路里模型中的代码是

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 模型,它在那里工作正常。但是,在每个新的卡路里条目之后进行更新比用户更新他们的设置更有意义。有什么建议吗?我错过了什么?

谢谢你的帮助。

4

1 回答 1

3

我假设您的卡路里模型与用户有 has_one 关系,并且用户 has_many Calories。

在卡路里模型中:

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
于 2013-10-03T21:15:19.660 回答