加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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),
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 = {}
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语句

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读