我使用Ruby on rails创建了一个网站,并为我的用户提供了一个包含点的数据库。
每个用户都有积分,所以我将其称为@user.points
。
我可以使用以下方式查看要点:
<%= user.points %>
我正在尝试在用户完成某项操作时从我的页面增加这些点数。所以我试着这样做:
<% @user.points += 100 %>
但这似乎不起作用。我觉得有一个简单的解决方案,或者我在监督一些事情。
答案 0 :(得分:6)
您可以使用increment(attribute, by = 1)
:
如果为nil,则将属性初始化为零,并添加传递的值 (默认为1)。增量直接在底层执行 属性,不调用setter。只对基于数字的有意义 属性。返回自我。
@user.increment(:points, 100)
示例:
=> user = User.last
=> user.points
=# 100
=> user.increment(:points, 100)
=> user.points
=# 200
=> user.increment(:points, 100)
=> user.points
=# 300
=# ......
答案 1 :(得分:0)
如果您想在用户执行某项操作时增加该值,则应在触发给定操作时更新控制器中的点。
Class MyController
def given_action
@user.update_attributes(points: new_value)
end
end
答案 2 :(得分:0)
创建成员操作以执行增量任务
def increase_points
user = User.find_by(id: params[:id])
user.update_attributes(points: (user.points + 100))
end
希望这有帮助!
答案 3 :(得分:0)
在Зелёный的answer中添加一个感叹号,该对象也将直接更新:
user.increment!(:points, 1)