对于时间相关的查询我们可以直接用数据库底层命令来做:
where_str << "at_moment between ? AND ?" where_vals << date_start << "#{date_end} 23:59:59" where_str << (where_str == "" ? "(now() - '#{days_interval}'::INTERVAL) < at_moment" : " AND (now() - '#{days_interval}'::INTERVAL) < at_moment") AuditLog.where(where_str,*where_vals).order("at_moment DESC")不过不怎么漂亮,我们何不让Rails帮我们完成这些呢?
AuditLog.where("created_at > ? AND created_at < ?",Time.now - 4.hour,Time.now - 2.hour)两者比较而言显然后面一种更加清楚简洁,而且不用考虑不同数据库兼容性的问题了。 ;)
大熊猫侯佩 认证博客专家 Swift Objective-C Xcode 非自由程序员,博客认证专家。汇编板块版主, 其他开发语言大版版主。对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。