Rails 如何从模型修改方法中的实例值?



我在我的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实例并修改其值?

如果要与模型分开更新年龄,而不是update_attributes方法,则在模型方法中,您必须在对象上调用save,以便更改持续。

def update_age
    self.age = 50
    self.save
end

@user.update_attributes(user_params)没有更新用户的年龄。检查您的user_params,以验证年龄作为参数。@user.update_attributes(user_params)是否会抛出任何错误?

最新更新