无法使用datamapper查找/检索特定表的结果

时间:2010-10-29 03:14:48

标签: ruby sinatra haml datamapper

我正在使用连接到mysql数据库的datamapper的sinatra应用程序,并且在从一个特定的表中检索/查找记录时遇到问题。我可以使用datamapper find插入它,但是当我尝试执行@sleepEntries = Sleep_Log.all时,我收到以下错误:ArgumentError:参数超出范围。当我将所有内容加载到irb中时,我得到了同样的错误。我还启用了查看查询的功能,然后返回SELECT idstart_timelengthtimestamp FROM sleep_logs ORDER BY {{1}当我调用Sleep_Log.all时。当我通过mysql命令行工具连接到mysql数据库时,我可以确认该表中有条目。当我运行数据映射器错误的查询时,我没有问题得到结果。这是Sleep_Log

的datamapper模型信息
id

这是通过describe sleep_logs访问的数据库中的表格。 alt text

从所有其他表中检索结果是多么奇怪。

来自irb的回溯 alt text

2 个答案:

答案 0 :(得分:0)

如果您尝试Sleep_Log.first,是否收到错误消息?如果是这样,你可以粘贴记录,还是显示错误的记录?

桌子是如何构建的?您是否使用DM检查已输入的记录?或者你也通过DM输入它们?

答案 1 :(得分:0)

我们刚刚遇到了完全相同的问题。在我们的例子中,事实证明你必须使用DateTime。 Mysql没有Time数据库类型并保存为DateTime。但是,DataMapper并没有得到它并且爆炸了。如果您将模型切换为使用DateTime,DM将获得它。