У меня есть модель User, которая имеет атрибут: credits. Мне нужна простая кнопка, которая добавит 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 к атрибуту и избежать обратного вызова, я никогда не думал, что такая простая вещь может быть такой сложной.
EDIT:
Я изменил обратный вызов на: 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:
Хорошо, это была проблема проверки, из-за которой изменения в «РЕДАКТИРОВАНИИ» не работали, но я все равно хотел бы получить ответ на первоначальный вопрос обновления без обратных вызовов!