我有一个具有:credits属性的用户模型。我想要一个简单的按钮,通过名为“ add”的路由将5加到用户的信用中,以便/ users / 3 / add将5加到用户id = 3的信用中。
def add
@user = User.find(params[:id])
@user.credits += 5
redirect_to root_path
end
那是我控制器的相关部分。问题是,我不想调用@ user.save,因为我有一个before_save回调,它根据当前UTC时间重新加密用户密码。我只想简单地在属性中添加5并避免回调,我从未想到过如此简单的事情可能会如此困难。
编辑:
我将回调更改为:before_create,这是我的新控制器代码(相关部分):
def add
@user = User.find(params[:id])
@user.add_credits(5)
@user.save
flash[:success] = "Credits added!"
redirect_to root_path
end
这是我在模型中的代码:
def add_credits(num)
self.credits = num
end
编辑2:
好的,这是一个验证问题,无法使“ EDIT”中的更改生效,但我仍然很乐意回答不使用回调进行更新的原始问题!