在我最近的工作中,由于要做数据统计,与时间区间打交道非常多,如统计这个月的销售量之类的。
Message.find(:all, :conditions => {:created_at => Time.now.beginning_of_month..Time.end_of_month})
对于爱美的程序员来说,这看起来不养眼,也不符合DRY精神。写成这种形式感觉 怎么样呢:
Message.in(:this_month) # 在一个named_scope中
来看看是如何做到这么DSLful的吧!
在config/initializer目录中创建timeranges.rb文件,如下:
# timeranges.rb
TimeRanges = {
:today => lambda { Time.now.beginning_of_day..Time.now.end_of_day },
:yesterday => lambda { 1.day.ago.beginning_of_day..1.day.ago.end_of_day },
:this_week => lambda { Time.now.beginning_of_week..Time.now.end_of_week },
:last_week => lambda { 1.week.ago.beginning_of_week..1.week.ago.end_of_week},
:this_month => lambda { Time.now.beginning_of_month..Time.now.end_of_month },
:last_month => lambda { 1.month.ago.beginning_of_month..1.month.ago.end_of_month }
}
在Model中创建一个名为in的named_scope:
class Message < ActiveRecord::Base
named_scope :in, lambda { |period|
:conditions => {:created_at => TimeRanges[period].call}
}
end
一个字,爽!
参考:
http://workswithruby.com/2009/2/application-wide-timeranges-3
分享到:
相关推荐
本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...
Rails_3_Cheat_Sheets.pdf
# 在控制器中使用scope class CatsController def index @cats = Cat.all @tabby_cats = Cat.tabby @kitten_cats = Cat.kitten end end ``` #### `has_scope` Gem 除了在模型中定义`scope`之外,还可以使用`...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
2. **模型(Models)**:Rails中的模型负责与数据库交互,使用ActiveRecord进行数据操作。书中可能会涵盖ActiveRecord的基本用法,如创建、读取、更新和删除(CRUD)操作,关联关系(如属主、多对多等),以及验证...
ActionCable是Rails5中内置的WebSocket库,它将WebSockets的复杂性封装起来,提供了一种与Rails应用程序的其他部分无缝集成的方式。ActionCable的核心组成部分包括: 1. **Connection**: 连接管理,负责建立和维护...
Git作为版本控制系统,对于团队协作开发项目尤为重要,学习它的使用方法能够帮助开发者更好地管理代码的版本。而在Rails开发中,合适的编辑器可以提高代码编写和管理的效率,Linux命令行则对于部署和维护开发环境...
在Rails应用中使用`profanity_filter`的步骤大致如下: 1. **安装 gem**:首先,在你的Rails项目的`Gemfile`中添加`gem 'profanity_filter'`,然后运行`bundle install`命令来安装。 2. **配置**:在你的Rails应用...
RailsAdmin_ImageManager RailsAdmin和CKEditor的图像管理器。...$ rails db:migrate SCOPE=rails_admin_image_manager 安装图像管理器CKEditor插件 mkdir -p app/assets/javascripts/ckeditor && touch app
gem 'rails_admin_content_builder' 运行生成器并进行迁移 rails g rails_admin_content_builder rake db:migrate 在app / assets / application.scss中添加样式 * = require rails_admin_content_builder 用法 ...
### 张文钿 Rails 最佳实践分享概览 在一次重要的技术分享会上,台湾著名的Rails开发者张文钿(ihower)向...随着更多开发者加入到这个项目中来,相信`rails_best_practices`将会成为Rails社区中不可或缺的一部分。
Agile Web Development with Rails 1-14节_ppt(老师发的修正版)
3. **进程管理**:使用如Unicorn或Puma这样的Web服务器,它们能更好地管理Rails进程,提高并发能力。 五、资产管道优化 1. **合并CSS和JS**:使用Rails的Asset Pipeline合并文件,减少HTTP请求。 2. **压缩资产**...
自述文件版本和设置$ ruby -vruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-darwin18]$ rails -... $ rails new rails_model_test_hello_world -T -m ~/rtfb_template.rb$ cd rails_model_test_hello_world$ rail
标题中的“从图像生成Bootstrap配色方案的Rails应用程序”是一个基于Ruby on Rails的Web应用,它的主要功能是根据用户上传的图像自动生成匹配的Bootstrap配色方案。Bootstrap是一款流行的前端开发框架,它提供了丰富...
在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...
安装要启用rails_admin_history_rollback ,请将以下内容添加到您的Gemfile确保将其添加到rails_admin之后: gem 'rails_admin'gem 'rails_admin_history_rollback' 不用说,此插件还需要paper_trail gem。...
Rails 管理员成为用户 Rails Admin 插件成为主应用程序中的设计用户 概述 在对用户问题进行故障排除时,从... 在您的config/initializers/rails_admin.rb初始化程序中添加配置: RailsAdmin . config do | config |
标题中的"plug_rails_cookie_session_store"是一个针对Rails框架的会话存储插件,它旨在在Elixir的Phoenix框架中实现与Rails相兼容的会话管理。这个插件的目的是让那些从Rails迁移到Elixir Phoenix的应用程序能够...
Rails,全称Ruby on Rails,是一款基于Ruby语言的开源Web应用程序框架,以其“Don't Repeat Yourself”(DRY)和...在使用这些Gem时,记得阅读其文档,了解使用方法和注意事项,以便更好地融入到自己的项目中。