Purpose
If you are using many times created_at and updated_at attributes and you’re
playing a lot with them in you queries, you should be interesting by this
MonkeyPatch who is
adding useful scopes in every models who inherits from ActiveRecord::Base.
MonkeyPatch
- Create
app/initializer/active_record_scopes_extension.rbfile and add the code below. - Call
MyModel.created(DateTime.now)orMyModel.updated(3.days.ago)orMyModel.created(2.day.ago, 1.day.ago).
RUBY
module Scopes
def self.included(base)
base.class_eval do
def self.created(date_start, date_end = nil)
if date_start && date_end
scoped(:conditions => ["#{table_name}.created_at >= ? AND #{table_name}.created_at <= ?", date_start, date_end])
elsif date_start
scoped(:conditions => ["#{table_name}.created_at >= ?", date_start])
end
end
def self.updated(date_start, date_end = nil)
if date_start && date_end
scoped(:conditions => ["#{table_name}.updated_at >= ? AND #{table_name}.updated_at <= ?", date_start, date_end])
elsif date_start
scoped(:conditions => ["#{table_name}.updated_at >= ?", date_start])
end
end
end
end
end
ActiveRecord::Base.send(:include, Scopes)