У мене є модель користувача, яка має атрибут: credits. Я хочу просту кнопку, яка додасть 5 до кредитів користувача через маршрут, що називається "додати", щоб / users / 3 / add додав 5 до кредитів ідентифікатора користувача = 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" не працювали, але я все одно хотів би отримати відповідь на вихідне питання оновлення без зворотних викликів!