Ruby on rails Rails中的查询不返回任何记录

Ruby on rails Rails中的查询不返回任何记录,ruby-on-rails,sqlite,Ruby On Rails,Sqlite,这是我上一个问题()的延伸 我通过将正确的值传递给控制器解决了这个问题,但是我的查询仍然没有返回任何记录,但是我的数据库中有匹配的记录 新编辑的应用程序控制器 # GET /bentries/january def monthlysumm @bentries = Bentry.by_month(params[:billDate]) end 这是对模型的补充 def self.by_month(mon) where("strftime('%m', billDate) + 0

这是我上一个问题()的延伸

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

新编辑的应用程序控制器

# 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管理器并键入(等效的)SQL语句

SELECT * FROM bentries WHERE (strftime('%m', billDate) + 0 = 2)
它从“bentries”表返回预期的3条记录,但应用程序中的代码不会生成结果记录集


有人能看到我在控制器或模型中哪里出了问题吗

您的查询不一样

生成的是查找字符串,输入的是查找整数

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

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

或者您可以在调用
by\u month
时执行此操作,这取决于您希望
by\u month
方法中的月份是整数还是字符串。

好的,我想是这样的。现在我已经按照你的建议添加了
.to-I
,viola现在得到了我期望的结果!谢谢你,格雷姆!别担心。很乐意帮忙。