Почему метод приращения Rails не сохраняет изменения?
У меня есть этот код для реализации превью up/down
функциональность в моем приложении рельсы
if params[:vote][:type] == "up"
answer = Answer.find_by_id(params[:vote][:id])
answer.increment(:ups)
render text: answer.ups
end
if params[:vote][:type] == "down"
answer = Answer.find_by_id(params[:vote][:id])
answer.increment(:downs)
render text: answer.downs
end
Это не дает никакой ошибки, но увеличенное значение не обновляется в БД.
Этот код правильно работает в консоли rails.
Пожалуйста помоги,
заранее спасибо
3 ответа
Решение
Не могли бы вы написать схему вашей модели, я имею в виду поля с типом данных
другая миграция с:
change_column :answers, :ups, :integer, :default: 0
change_column :answers, :downs, :integer, :default: 0
может помочь тебе
Это по замыслу. Метод увеличивает атрибут, но не сохраняет. использование increment!
( взрыва версия), если вы хотите сохранить.
Проверьте это один раз
if params[:vote][:type] == "up"
answer = Answer.find_by_id(params[:vote][:id])
answer.to_i.increment(:ups)
render text: answer.ups
elsif params[:vote][:type] == "down"
answer = Answer.find_by_id(params[:vote][:id])
answer.to_i.increment(:downs)
render text: answer.downs
end