在Rails中查询不返回任何记录

时间:2014-04-22 16:46:12

标签: ruby-on-rails sqlite

这是我上一个问题(using a select, assign variable and retrieve records)的扩展。

我通过将正确的值传递给控制器​​解决了问题,但我的查询仍然没有返回任何记录,但我的数据库中有匹配的记录。

应用程序的新编辑控制器......

# GET /bentries/january
def monthlysumm
   @bentries = Bentry.by_month(params[:billDate])    
end

这里是模型的补充...

def self.by_month(mon)
   where("strftime('%m', billDate) + 0 = ?", mon)
end

这会生成一个像这样的SQL语句......

SELECT "bentries".* FROM "bentries" WHERE (strftime('%m", billDate) + 0 = '2')

如果我在Firefox中使用SQLite Manager并键入(等效的)SQL语句...

SELECT * FROM bentries WHERE (strftime('%m', billDate) + 0 = 2)

它从" bentries"返回预期的3条记录。表,但是应用程序中的代码生成NO结果记录集。

任何人都可以看到我在控制器或模型中出错了吗?!?

1 个答案:

答案 0 :(得分:0)

您的查询不一样。

生成的字符串正在查找字符串,您输入的字符串正在查找整数。

参数作为字符串进入控制器,因此如果需要,您需要使其成为整数。例如:

def self.by_month(mon)
   where("strftime('%m', billDate) + 0 = ?", mon.to_i)
end

或者您可以在调用by_month时执行此操作,具体取决于您是希望by_month方法中的月份为整数还是字符串。