试着在Rails中实现非常简单的简单点

时间:2018-06-08 15:57:20

标签: ruby-on-rails ruby-on-rails-5

请参阅我的控制器中的以下代码

def create
        @wad = current_user.wads.build(wad_params)
        if @wad.save
            current_user.points == current_user.points + 5
            redirect_to @wad    
        else
            flash[:error] = 'Error try again'
            render 'new'
        end
    end

我的目标是当用户创造一团时他们得到5分。我将点列迁移到用户表,并且能够通过控制台更新点。

我根本没有得到任何错误,像往常一样创建了wad,并且页面重定向正确但是在用户表中没有更新点值。任何想法可能是什么问题?

1 个答案:

答案 0 :(得分:3)

这里有几点意见:

首先,由于您未保存任何一条记录,因此暂时不会更改user

此外,您还需要使用一个=来分配用户points或方法,如下例所示。以下代码将克服这一点:

def create
  @wad = current_user.wads.build(wad_params)
  if @wad.save
    current_user.update_attributes(points: current_user.points + 5) # update_attributes assigns the attributes and saves
    redirect_to @wad    
  else
    flash[:error] = 'Error try again'
    render 'new'
  end
end