Почему метод приращения 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
Другие вопросы по тегам