温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-08-14 16:43:15 阅读:569 作者:JackSongBlack 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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

class Metadatum < ActiveRecord::Base scope :last_n_dayslambda { |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-1Time.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)

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

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×