【发布时间】:2014-01-14 17:16:47
【问题描述】:
我有一个名为“users”的数据库,其中包含一个名为“rating”的列。
用户可以从保存在“奖励”数据库中的另一个用户(1、5 或 10 值)接收“奖励”(:award_name、:award_value、:user)其中 :user 是 id获得奖励的用户。 (检查编辑)
我想知道的是,当我将奖励数据保存到奖励数据库时,如何根据奖励值同时更新用户数据库中的“评分”字段?
到目前为止,这是我将奖励保存在 Awards_controller 中的代码。 @points 成功包含了奖励的值,我只想知道这里要添加什么来更新 User 表。
def create
@points = Award::TYPES[params[:award][:name]]
@award = current_user.awards.build(award_params)
if @award.save
flash[:success] = "Award Given!"
redirect_to recipe_path(params[:recipe_id])
else
flash[:danger] = 'You have already awarded this user!'
redirect_to recipe_path(params[:recipe_id])
end
end
希望这是有道理的。谢谢!
编辑:更改的问题
我试图简化我的情况,但我认为我走错了路。
用户可以奖励其他用户创建的食谱。当给食谱奖励时(选择 1、5 或 10 分),奖励数据库中会填充 :name、:user_id、:recipe_id、:points(其中 user_id 是授予奖励的用户的 id) .
奖励配方非常有效,我只需将奖励所含的点数转移到拥有该配方的用户的评分中即可。
我有 2 个问题。我是否需要在奖励数据库中为配方所有者(即奖励接收者)的 ID 创建另一列,然后每次加载用户时计算他们收到的奖励的积分总和 OR 有没有办法在奖励保存后立即更新用户评分?
【问题讨论】:
-
我有 1 个问题。 rating 和 Award_value 一样吗??
标签: ruby-on-rails ruby database