ruby-on-rails – Rails 2.3.5 – “.find”函数不适用于(:cond
发布时间:2020-12-17 02:05:44 所属栏目:百科 来源:网络整理
导读:我想要做的是查找过去60天内使用过的特定记录. 我正在使用Oracle(9i), Rails v:2.3.5, Ruby v:1.8.7 我的代码定义日期间隔是: date =(((Time.now - 60.days).strftime("%d-%b-%y"))...(Time.now.strftime("%d-%b-%y"))) 以下是我如何使用它: conditions
我想要做的是查找过去60天内使用过的特定记录.
我正在使用Oracle(9i), 我的代码定义日期间隔是: date =(((Time.now - 60.days).strftime("%d-%b-%y"))...(Time.now.strftime("%d-%b-%y"))) 以下是我如何使用它: conditions = {} conditions[:start_date] = date conditions[:account_no] = account_number results = MyModel.find(:all,:conditions => conditions) 看看被选中的是什么,我基本上做了: results.each {|r| if (!(r.column_name.nil?)) #do something here end } 结果: 但是,当我将由“MyModel.find …”生成的查询复制并粘贴到sqlDeveloper时,我可以明确地看到我想要的内容. 应该是什么原因导致我无法使用SQL Developer获得相同的结果,尽管我使用的是上面代码生成的相同查询 解决方法
如果start_date是Date,则以下内容应该有效
date =((DateTime.now - 60)...(DateTime.now)) conditions = {} conditions[:start_date] = date conditions[:account_no] = account_number results = MyModel.find(:all,:conditions => conditions) 这将导致日期是一系列日期而不是一系列字符串. 现在如果你运行date.to_a它会返回一个空数组,因为它是一个不合适的范围. 如果您使用date.to_a运行上述操作,它将返回60天的日期数组,不包括今天的日期.这将在生成的SQL中创建正确的IN语句 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |