学习札记——rubyonrails关于时间操作与数据查询-创新互联
笔者接到一个新的需求,要做按时间和类型两种方式进行统计数据库的数据,第一个需求是俺类型统计一共有多少数据比较简单,但是按时间和类型比较麻烦,拿到这个需求,我首先想到是的ruby中的time函数,由于我必须统计五个月内的数据,每个月都有三个类型的数据,需要生成一个数组套数组的结构,下面是我的实现代码
创新互联是一家集网站建设,建宁企业网站建设,建宁品牌网站建设,网站定制,建宁网站建设报价,网络营销,网络优化,建宁网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
- class Metadatum < ActiveRecord::Base
- scope :last_n_days, lambda { |day_max, day_min, mode| where('create_date <= ? AND create_date >= ? AND resource_mode = ?', day_max, day_min, mode) }
- def statistics_scope_of_the_time
- arr_list = Array.new
- time_max = Time.now
- ["XX资源", "YY资源", "ZZ资源"].each do |mode|
- (1..5).each do |count_data|
- time_min = Time.new(time_max.year, time_max.month)
- arr_data = Array.new
- arr_data << time_max.month
- arr_data<< Metadatum.last_n_days(time_max, time_min, mode).count
- arr_list << arr_data
- if time_max.month-1 != 0
- time_max = Time.new(time_max.year, time_max.month-1, Time.days_in_month(time_max.month-1))
- else
- return arr_list
- end
- end
- end
- arr_list
- end
- 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)
参数写的是月份,他返回是这个月的天数,
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
网站栏目:学习札记——rubyonrails关于时间操作与数据查询-创新互联
网址分享:http://azwzsj.com/article/dcjiho.html