成都网站建设设计

将想法与焦点和您一起共享

学习札记——rubyonrails关于时间操作与数据查询

笔者接到一个新的需求,要做按时间和类型两种方式进行统计数据库的数据,第一个需求是俺类型统计一共有多少数据比较简单,但是按时间和类型比较麻烦,拿到这个需求,我首先想到是的ruby中的time函数,由于我必须统计五个月内的数据,每个月都有三个类型的数据,需要生成一个数组套数组的结构,下面是我的实现代码

公司主营业务:网站设计、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出岗巴免费做网站回馈大家。

  1. class Metadatum < ActiveRecord::Base 
  2. scope :last_n_days, lambda { |day_max, day_min, mode| where('create_date <= ? AND create_date >= ? AND resource_mode = ?', day_max, day_min, mode) } 
  3. def statistics_scope_of_the_time 
  4.     arr_list = Array.new 
  5.     time_max = Time.now 
  6.  
  7.     ["XX资源", "YY资源", "ZZ资源"].each do |mode| 
  8.       (1..5).each do |count_data| 
  9.         time_min = Time.new(time_max.year, time_max.month) 
  10.         arr_data = Array.new 
  11.         arr_data << time_max.month 
  12.         arr_data<< Metadatum.last_n_days(time_max, time_min, mode).count 
  13.         arr_list << arr_data 
  14.         if time_max.month-1 != 0 
  15.         time_max = Time.new(time_max.year, time_max.month-1, Time.days_in_month(time_max.month-1)) 
  16.         else 
  17.           return arr_list 
  18.         end 
  19.       end 
  20.     end 
  21.     arr_list 
  22.   end 
  23. end 

主要注意的是ruby查询方法 where的使用

scope :last_n_days, lambda { |day_max, day_min, mode| where('create_date <= ? AND create_date >= ? AND resource_mode = ?', day_max, day_min, mode) } 

这句中我们可以看到使用ruby的lambda代码块双竖线内就是就是参数,而问号依次代表了每个参数。

还有一个Time类方法 第一次接触

Time.days_in_month(month)

参数写的是月份,他返回是这个月的天数,


分享名称:学习札记——rubyonrails关于时间操作与数据查询
链接地址:http://chengdu.cdxwcx.cn/article/jspsod.html