我有一个具有:credits特性的用户模型。我想要一个简单的按钮,将增加5到用户的学分,通过所谓的路线“添加”,这样/用户/ 3 /加将增加5到用户ID的学分= 3Rails:无需调用回调即可更新模型属性
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”中的更改无法正常工作,但我仍然喜欢无需回调即可更新原始问题的答案!
我提供了一个不触发回调的方法列表,Finbarr和我都建议使用条件回调 - 您在寻找哪些其他解决方案? – 2011-12-28 04:21:27