date_scopable 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +2 -0
- data/date_scopable.gemspec +21 -0
- data/lib/date_scopable.rb +74 -0
- data/lib/date_scopable/version.rb +3 -0
- data/readme.md +26 -0
- metadata +74 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "date_scopable/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "date_scopable"
|
7
|
+
s.version = DateScopable::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Anton Zolotov"]
|
10
|
+
s.email = ["anton@zolotov.eu"]
|
11
|
+
s.homepage = "https://github.com/azolotov/date_scopable"
|
12
|
+
s.summary = %q{Convenient scopes for retrieving ActiveRecord models by date}
|
13
|
+
s.description = %q{Convenient scopes for retrieving ActiveRecord models by date}
|
14
|
+
|
15
|
+
s.rubyforge_project = "date_scopable"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module DateScopable
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
##
|
6
|
+
# Date Scopes
|
7
|
+
#
|
8
|
+
# returns all objects created on a specific day or
|
9
|
+
# within a specific range of days
|
10
|
+
#
|
11
|
+
# User.today
|
12
|
+
# User.yesterday
|
13
|
+
# User.on Date.parse("4/7/2011")
|
14
|
+
# User.last_7_days
|
15
|
+
# User.last_month
|
16
|
+
# User.between(Date.parse("4/1/2011"), Date.parse("4/5/2011"))
|
17
|
+
#
|
18
|
+
# Usage: Ensure that the path to this module is autoloadable in
|
19
|
+
# config/application.rb
|
20
|
+
#
|
21
|
+
# config.autoload_paths += %W(#{Rails.root}/lib)
|
22
|
+
#
|
23
|
+
# then, include it in your models
|
24
|
+
#
|
25
|
+
# class User < ActiveRecord::Base
|
26
|
+
# include DateScopable
|
27
|
+
#
|
28
|
+
# # ...
|
29
|
+
# end
|
30
|
+
|
31
|
+
##
|
32
|
+
# Show all objects created today
|
33
|
+
#
|
34
|
+
scope :today, lambda {
|
35
|
+
where("created_at > ?", Time.now.beginning_of_day)
|
36
|
+
}
|
37
|
+
|
38
|
+
##
|
39
|
+
# Show all objects created yesterday
|
40
|
+
#
|
41
|
+
scope :yesterday, lambda {
|
42
|
+
where("created_at > ? AND created_at < ?", Date.yesterday.beginning_of_day, Date.yesterday.end_of_day)
|
43
|
+
}
|
44
|
+
|
45
|
+
##
|
46
|
+
# Show all objects created on a specific day
|
47
|
+
#
|
48
|
+
scope :on, lambda { |day|
|
49
|
+
where("created_at > ? AND created_At < ?", day.beginning_of_day, day.end_of_day)
|
50
|
+
}
|
51
|
+
|
52
|
+
##
|
53
|
+
# Show all objects created in the last seven days
|
54
|
+
#
|
55
|
+
scope :last_7_days, lambda {
|
56
|
+
where("created_at > ?", 1.week.ago.beginning_of_day)
|
57
|
+
}
|
58
|
+
|
59
|
+
##
|
60
|
+
# Show all objects created last month
|
61
|
+
#
|
62
|
+
scope :last_month, lambda {
|
63
|
+
where("created_at > ?", 1.month.ago.beginning_of_day)
|
64
|
+
}
|
65
|
+
|
66
|
+
##
|
67
|
+
# show all objects created between two specific days
|
68
|
+
#
|
69
|
+
scope :between, lambda { |start, finish|
|
70
|
+
where("created_at > ? AND created_at < ?", start.beginning_of_day, finish.end_of_day)
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
## DateScopable
|
2
|
+
|
3
|
+
DateScopable provides convenient scopes for Rails ActiveRecord models:
|
4
|
+
|
5
|
+
User.today
|
6
|
+
User.yesterday
|
7
|
+
User.on Date.parse("4/7/2011")
|
8
|
+
User.last_7_days
|
9
|
+
User.last_month
|
10
|
+
User.between(Date.parse("4/1/2011"), Date.parse("4/5/2011"))
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
# Gemfile
|
15
|
+
gem "date_scopable"
|
16
|
+
|
17
|
+
$ bundle install
|
18
|
+
|
19
|
+
# In your models
|
20
|
+
class User < ActiveRecord::Base
|
21
|
+
include DateScopable
|
22
|
+
|
23
|
+
# the rest of your model
|
24
|
+
end
|
25
|
+
|
26
|
+
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: date_scopable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Anton Zolotov
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-05-25 00:00:00 -04:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: Convenient scopes for retrieving ActiveRecord models by date
|
23
|
+
email:
|
24
|
+
- anton@zolotov.eu
|
25
|
+
executables: []
|
26
|
+
|
27
|
+
extensions: []
|
28
|
+
|
29
|
+
extra_rdoc_files: []
|
30
|
+
|
31
|
+
files:
|
32
|
+
- .gitignore
|
33
|
+
- Gemfile
|
34
|
+
- Rakefile
|
35
|
+
- date_scopable.gemspec
|
36
|
+
- lib/date_scopable.rb
|
37
|
+
- lib/date_scopable/version.rb
|
38
|
+
- readme.md
|
39
|
+
has_rdoc: true
|
40
|
+
homepage: https://github.com/azolotov/date_scopable
|
41
|
+
licenses: []
|
42
|
+
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
hash: 3
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
version: "0"
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 3
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
requirements: []
|
67
|
+
|
68
|
+
rubyforge_project: date_scopable
|
69
|
+
rubygems_version: 1.5.0
|
70
|
+
signing_key:
|
71
|
+
specification_version: 3
|
72
|
+
summary: Convenient scopes for retrieving ActiveRecord models by date
|
73
|
+
test_files: []
|
74
|
+
|