Rails добавляет единицу для увеличения значения SQL - PullRequest
6 голосов
/ 28 декабря 2010

Я пытаюсь добавить его в уже увеличенное поле в БД, но получаю следующую ошибку: NoMethodError (undefined method + 'для false: FalseClass): `

Код:

med = Media.find(params[:media_id])
med.update_attributes({:screener_viewed => med.screener_viewed + 1})

Я просто хочу добавить 1 к текущему значению screener_viewed, но не могу заставить его работать.

Рабочий код:

Media.increment_counter(:screener_viewed, params[:media_id])

Ответы [ 4 ]

16 голосов
/ 28 декабря 2010

Использование increment!:

med.increment!(:screener_viewed)

Убедитесь, что screener_viewed имеет тип integer в вашей базе данных.

0 голосов
/ 19 сентября 2014

Осторожно при использовании приращения! Я не поддерживаю одновременный запрос.

http://apidock.com/rails/ActiveRecord/Base/increment!

0 голосов
/ 28 декабря 2010

Не могли бы вы предоставить определение миграции для модели Media?Похоже, вы определили его как логическое значение, которое не поддерживает оператор +:

irb(main):002:0> false + 1
NoMethodError: undefined method `+' for false:FalseClass
        from (irb):2
0 голосов
/ 28 декабря 2010

Внимательно изучите сообщение об ошибке. В нем говорится, что для FalseClass не определен метод сложения, что означает, что screener_viewed содержит логическое значение false. Вы ожидали, что оно будет содержать целое число, или вы пытаетесь изменить значение на true?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...