如何在Rails中更新并保存另一个模型?

时间:2013-10-03 19:19:57

标签: ruby-on-rails

在我的计划中,我有一个模型,卡路里,它取一个人吃的东西,并给他们一点总和。在计算每天营养信息的那个点之后,我想更新“积分”。用户模型中的变量。

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

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条目之后更新更有意义,而不是用户更新其设置。有什么建议?我错过了什么?

感谢您的帮助。

1 个答案:

答案 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