Tru*_*ran 6 ruby ruby-on-rails date range
我正在尝试运行以下查询.我知道语法错误,但我无法弄清楚它有什么问题.基本上,我试图找到有多少游戏的日期在45天之内.我有一个名为Game的模型,它有一个名为date_of_game的字段属性.我的查询:
Game.where(date_of_game: <= (Time.now + 45.days)).count
Run Code Online (Sandbox Code Playgroud)
谢谢!!
MrY*_*iji 11
你说:
有多少游戏的日期在45天之内
但是你的代码将检索日期少于今天+ 45天的所有游戏,这意味着它将返回去年的游戏.要遵循您的陈述,您应该使用:
Game.where(date_of_game: Date.current..(Date.current + 45.days))
Run Code Online (Sandbox Code Playgroud)
此代码将返回在接下来的45天内发布的所有游戏.
什么是..?
它是创建Ranges的运营商.试试你的控制台:
> (1..5).each do |some_number|
> puts some_number
> end
1
2
3
4
5
=> 1..5
Run Code Online (Sandbox Code Playgroud)
它也适用于日期:
> (Date.today..(Date.today+5.days)).each do |some_date|
> puts some_date
> end
2014-06-04
2014-06-05
2014-06-06
2014-06-07
2014-06-08
2014-06-09
=> Wed, 04 Jun 2014..Mon, 09 Jun 2014
Run Code Online (Sandbox Code Playgroud)
您不能使用这样的哈希,而是使用字符串
Game.where("date_of_game <= ? ", (Time.now + 45.days)).count
Run Code Online (Sandbox Code Playgroud)