在我最近的工作中,由于要做数据统计,与时间区间打交道非常多,如统计这个月的销售量之类的。
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_v_0.1 RestFul_Rails_Dev_v_0.1
Rails_Recipes_with_Source_Code
Rails_3_Cheat_Sheets.pdf
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
rails_best_practices的安装和使用都非常方便,只需简单两条命令就能知道代码中何处需要修改: sudo gem install rails_best_practices --source http://gemcutter.org rails_best_practices . 最新的0.3.3版本中...
应用Rails进行REST 开发 ,翻译自《RESTful Rails Development》
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 用法 ...
Web开发敏捷之道应用Rails进行敏捷Web开发_中文书_第4版
Agile Web Development with Rails 1-14节_ppt(老师发的修正版)
awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版
自述文件版本和设置$ 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
安装要启用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 |
效果展示: https://github.com/zaru/action_cable-ika-game-sample/raw/master/ika2.gif?raw=true
InspiniaAdmin 2.6.1 Rails_Full_Version
复杂Rails系统架构优化
inspinia admin 2.5 中的 Rails_Full_Version
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的..."你可以使用 rails_apps_composer gem 执行以下操作:
RailsAdminNestedSet 主存储库已移至gitlab,所有新代码将在其中: 它的外观和感觉完全类似于但是使用了jQuery ...与rails_admin结合使用 为每个模型或仅为您需要的模型添加nested_set操作 RailsAdmin.config do |c