Ruby on Rails。增加数据库中的整数

时间:2016-03-15 08:23:47

标签: ruby-on-rails variables

我使用Ruby on rails创建了一个网站,并为我的用户提供了一个包含点的数据库。 每个用户都有积分,所以我将其称为@user.points。 我可以使用以下方式查看要点:

<%= user.points %>

我正在尝试在用户完成某项操作时从我的页面增加这些点数。所以我试着这样做:

<% @user.points += 100 %>

但这似乎不起作用。我觉得有一个简单的解决方案,或者我在监督一些事情。

4 个答案:

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