Rails如何修改Model中方法中实例的值?

时间:2016-11-24 19:15:56

标签: ruby-on-rails ruby-on-rails-4

我的UserController中有一个对象实例

@user = User.new

我试图从那个用户模型中调用一个方法

def update

    @user = current_user

    respond_to do |format|
      if @user.update_attributes(user_params)

        @user.update_age

        format.html { redirect_to @user}#, notice: 'User was successfully updated.' }
        format.json { render :show, status: :ok, location: @user }
      else
        format.html { render :edit, notice: 'Update unsuccessful' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

这是方法本身:

def update_age
    self.age = 50
end

结果是值保持不变并且不会改变。如何从用户模型中的控制器访问@user实例并修改其值?

1 个答案:

答案 0 :(得分:0)

如果您想要从模型而不是update_attributes方法单独更新年龄,那么在模型方法中,您必须在对象上调用save,以便保持更改。

def update_age
    self.age = 50
    self.save
end

没有@user.update_attributes(user_params)已经更新了用户的年龄。检查您的user_params以确认允许年龄作为参数。 @user.update_attributes(user_params)是否会抛出任何错误?