Может быть update_all
не разбирает переданную строку? params[:read]
это строка:
params[:read]
=> "true"
# or
=> "false"
Так что, возможно, он пытается сохранить строку в этом столбце, и поэтому у вас есть проблемы.
Попробуйте эту строку:
current_user.topics.where(:topic_id => params[:topic_id]).update_all(:read => true)
И посмотри, работает ли оно. Если да, то замените :read => params[:read]
на что-то вроде :read => params[:read] == 'true'
.
Я также надеюсь, что вы проверили, как выглядит хэш params
в этом контроллере. Если нет, просто введите:
logger.debug params.inspect
в начале read_updater
метода и проверьте логи, если все в порядке.