在铁路脚手架的日期范围内显示数据

时间:2012-06-28 06:17:13

标签: mysql ruby-on-rails view controller scaffold

这是在我的控制器中:

@somethings = Something.find(:all)

我的count变量会根据'rca'显示这些数据的分解:

@something_to_count = Something.count( :conditions => { :rca => "4X32W"})
@something_to_count2 = Something.count( :conditions => { :rca => "6X36W"})

.....等其他计数变量...

这很简单,我试图让它在一个视图中的最近三十天内以及另一个视图中的日期范围内显示从“Something”表中所做的所有条目的统计数据/计数。我在模型中使用了scaffold函数(created_atupdated_at)添加的默认时间戳。

我的观点必须分为两页。一页接受日期范围并显示计数变量以及表格中的数据,另一页显示过去30天内的相同数据。 (即def last_30_daysdef within_dates将是行动)。我在线找到了一个解决方案,它有一个从30等减去的日期变量,似乎没有用。一个完整的工作解决方案将不胜感激。请帮忙。另外,如何将简单的日期范围条目转换为与日期戳相同的格式?

1 个答案:

答案 0 :(得分:1)

您可以为查询创建范围,以便重复使用它们 我对你的问题的解决方法是这样的:

scope :last_30_days, where("created_at between ? and ?", Date.today - 30, Date.today)
scope :within_dates, lambda { |start_date, end_date|
  where("created_at between ? and ?", start_date, end_date)
}
scope :based_on_rca, lambda { |rca|
  where(:rca => rca)
}

@something_to_count = Something.based_on_rca("4X32W").last_30_days.count
@something_to_count = Something.based_on_rca("4X32W").within_dates(Date.today - 4.month, Date.today - 1.month).count

具有小查询的各种范围,可以链接以反映较大的查询。 问候。