Я ищу объяснение результата следующего запроса с Active Record:
date_range = (Date.today - 7)..(Time.now.to_datetime)
r = Report.find(:all, :conditions => {:created_at => date_range},
:group => 'date(created_at)',
:select => 'date(created_at) as day, count(id) as counter')
По сути, я просто подсчитываю результаты в таблице «отчеты», но я получил разные типы значений для именованного поля «счетчик», массив строк в двойных кавычках и массив только чисел.
MySQL
Если используется MySQL,
r.map(&:counter)
возвращается:
=> ["3", "3", "5", "4", "4"]
SQLite
Если используется SQLite,
r.map(&:counter)
возвращается:
=> [3, 3, 5, 4, 4]
Правильно ли, что MySQL возвращает числа с кавычками (строками) и числами SQLite?
Я ожидал, что оба возвращают только целые числа. Или мне не хватает конфигурации на стороне MySQL?
Edit:
На всякий случай обе БД созданы с использованием обычных миграций, поэтому все поля имеют эквивалентные типы.