Rails - 尝试从日期范围查询......从今天起的所有内容

Chr*_*len 13 ruby-on-rails date range

我正试图找出从rails查询日期范围的最佳方法...我在Google上查看但不确定如何使用此语法.

我有一个具有各种事件的模型,我想在我的查找条件中添加一个警告,该警告应该只显示字段:st_date是今天或更晚的事件,实际上只显示当前数据,没有发生在今天之前.

我遇到了一个问题,因为我没有结束日期来停止查询,我想查询从今天到下个月的所有内容.

我在想类似的东西

 @events = Event.find(:all, :conditions => ["start_date between ? and ?",
         date.Today, date.next_month.beginning_of_month])
Run Code Online (Sandbox Code Playgroud)

但我得到错误undefined局部变量或方法'日期'......

我是否需要做任何特别的事情才能使用Date类?或者我的查询语法有问题吗?我真的很感激任何帮助.

bra*_*rad 16

你想要Date.today,而不是date.today.你正在做的事情没有错,你只是没有正确引用日期类

而且它会 Date.today.next_month.beginning_of_month


mrw*_*ade 14

我会更进一步,在模型中定义一个范围以供重用.

# rails 3 example:
# app/models/event.rb
scope :upcoming, lambda {
  where("start_date between ? and ?", Date.today, Date.today.next_month.beginning_of_month)
}

# app/controllers/some_controller.rb
@events = Event.upcoming
Run Code Online (Sandbox Code Playgroud)

在Rails 3中还有关于范围的Railscasts剧集:http:
//railscasts.com/episodes/202-active-record-queries-in-rails-3

  • 你的范围是否应该包含lambda {}符号,以便在使用时评估日期,而不是在加载类时? (4认同)

Soh*_*han 6

Event.where(:start_date => Date.today..Date.today.next_month.beginning_of_month) 也很棒.