не могу найти / получить результаты из определенной таблицы с помощью datamapper - PullRequest
0 голосов
/ 29 октября 2010

Я работаю над приложением sinatra с datamapper, подключенным к базе данных mysql, и у меня возникают проблемы с поиском / поиском записей только из одной конкретной таблицы. Я могу вставить его с помощью datamapper find, но когда я пытаюсь сделать @sleepEntries = Sleep_Log.all, я получаю следующую ошибку: ArgumentError: аргумент вне диапазона. Когда я загружаю все в IRB, я получаю ту же ошибку. Я также включил возможность просмотра запросов и получаю обратно SELECT id, start_time, length, timestamp ОТ sleep_logs ORDER BY id, когда я вызываю Sleep_Log.all. Когда я подключаюсь к базе данных mysql через инструмент командной строки mysql, я могу подтвердить, что в этой таблице есть записи. Когда я запускаю запрос, который вызывает datamapper, у меня нет проблем с получением результатов. Вот моя информация о модели datamapper для Sleep_Log

class Sleep_Log
  include DataMapper::Resource

  property :id, Serial
  property :start_time, Time, :required => true
  property :length, Integer, :required => true
  property :timestamp, DateTime, :writer => :private

  belongs_to :user
end

Вот как выглядит таблица в базе данных, доступ к которой осуществляется через sleep_logs; alt text

Что странно, так это получение результатов из всех других таблиц.

Обратный след от IRB alt text

Ответы [ 2 ]

0 голосов
/ 23 апреля 2011

Мы только что столкнулись с точно такой же проблемой. В нашем случае оказалось, что вы должны использовать DateTime. Mysql не имеет типа базы данных Time и сохраняет как DateTime. Однако DataMapper не получает его и взрывается. Если вы переключите свою модель на использование DateTime, DM получит ее.

0 голосов
/ 04 ноября 2010

Если вы попробуете Sleep_Log.first, вы получите ошибку?Если да, не могли бы вы вставить в запись или ту, которая также показывает ошибку?

Как была построена таблица?Вы используете DM для проверки уже введенных записей?Или вы тоже вводите их через DM?

...