mongoid_time_field 0.0.0 → 0.1.0
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/README.rdoc +2 -1
- data/VERSION +1 -1
- data/lib/mongoid_time_field.rb +29 -7
- data/mongoid_time_field.gemspec +2 -2
- data/spec/time_spec.rb +39 -0
- metadata +17 -17
data/README.rdoc
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
= mongoid_time_field
|
2
|
-
|
2
|
+
|
3
|
+
Simple gem to store minutes+seconds or hours+minutes in one integer field in mongoid (as you would do in mysql with time field)
|
3
4
|
|
4
5
|
== Installation
|
5
6
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.0
|
data/lib/mongoid_time_field.rb
CHANGED
@@ -5,15 +5,17 @@ module Mongoid
|
|
5
5
|
def time_field(*columns)
|
6
6
|
[columns].flatten.each do |name|
|
7
7
|
attr = name.to_sym
|
8
|
+
name_minutes = (name.to_s + '_minutes').to_sym
|
9
|
+
|
8
10
|
field attr, type: Integer
|
9
|
-
|
11
|
+
|
10
12
|
define_method(name) do
|
11
|
-
|
12
|
-
if
|
13
|
+
minutes = read_attribute(attr)
|
14
|
+
if minutes.nil?
|
13
15
|
nil
|
14
16
|
else
|
15
|
-
|
16
|
-
sprintf("%d:%02d",
|
17
|
+
hours = (minutes / 60).to_i
|
18
|
+
sprintf("%d:%02d", hours, (minutes - 60 * hours))
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
@@ -22,12 +24,32 @@ module Mongoid
|
|
22
24
|
write_attribute(attr, nil)
|
23
25
|
nil
|
24
26
|
else
|
25
|
-
|
26
|
-
val =
|
27
|
+
hours, minutes = value.split(/:/)
|
28
|
+
val = minutes.to_i + (hours.to_i * 60)
|
27
29
|
write_attribute(attr, val)
|
28
30
|
value
|
29
31
|
end
|
30
32
|
end
|
33
|
+
|
34
|
+
define_method(name_minutes) do
|
35
|
+
minutes = read_attribute(attr)
|
36
|
+
if minutes.nil?
|
37
|
+
nil
|
38
|
+
else
|
39
|
+
minutes
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
define_method("#{name_minutes}=") do |value|
|
44
|
+
if value.blank?
|
45
|
+
write_attribute(attr, nil)
|
46
|
+
nil
|
47
|
+
else
|
48
|
+
write_attribute(attr, value.to_i)
|
49
|
+
value.to_i
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
31
53
|
end
|
32
54
|
end
|
33
55
|
end
|
data/mongoid_time_field.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "mongoid_time_field"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["glebtv"]
|
12
|
-
s.date = "2012-03-
|
12
|
+
s.date = "2012-03-18"
|
13
13
|
s.description = "hh:mm or mm:ss time field for mongoid"
|
14
14
|
s.email = "glebtv@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/time_spec.rb
CHANGED
@@ -16,6 +16,23 @@ describe Mongoid::TimeField do
|
|
16
16
|
dummy.save.should eq true
|
17
17
|
dummy.open.should eq '11:01'
|
18
18
|
end
|
19
|
+
|
20
|
+
it 'should handle blank values set as time' do
|
21
|
+
dummy = DummyTime.new
|
22
|
+
dummy.open = ''
|
23
|
+
dummy.save.should eq true
|
24
|
+
dummy.open.should be_nil
|
25
|
+
dummy.open_minutes.should be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should handle blank values set as minutes' do
|
29
|
+
dummy = DummyTime.new
|
30
|
+
dummy.open_minutes = ''
|
31
|
+
dummy.save.should eq true
|
32
|
+
dummy.open.should be_nil
|
33
|
+
dummy.open_minutes.should be_nil
|
34
|
+
end
|
35
|
+
|
19
36
|
end
|
20
37
|
|
21
38
|
describe 'when accessing a document from the datastore with a TimeField datatype' do
|
@@ -27,7 +44,29 @@ describe Mongoid::TimeField do
|
|
27
44
|
dummy = DummyTime.first
|
28
45
|
dummy.open.should eq '12:34'
|
29
46
|
end
|
47
|
+
|
48
|
+
it 'should have a minutes field value equal to what was initially persisted as time' do
|
49
|
+
dummy = DummyTime.first
|
50
|
+
dummy.open_minutes.should eq 754
|
51
|
+
end
|
30
52
|
end
|
53
|
+
|
54
|
+
describe 'when accessing a document from the datastore with a TimeField datatype as integer minutes' do
|
55
|
+
before(:each) do
|
56
|
+
DummyTime.create(:description => "Test", :open_minutes => 754)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'should have a time field value that matches the TimeField value that was initially persisted' do
|
60
|
+
dummy = DummyTime.first
|
61
|
+
dummy.open.should eq '12:34'
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should have a minutes field value equal to what was initially persisted as time' do
|
65
|
+
dummy = DummyTime.first
|
66
|
+
dummy.open_minutes.should eq 754
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
31
70
|
|
32
71
|
describe 'when accessing a document from the datastore with a TimeField datatype and empty value' do
|
33
72
|
before(:each) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_time_field
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
|
-
requirement: &
|
16
|
+
requirement: &75414110 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *75414110
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &75429980 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.8.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *75429980
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rdoc
|
38
|
-
requirement: &
|
38
|
+
requirement: &75429360 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3.12'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *75429360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &75428920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *75428920
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &75428470 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.8.3
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *75428470
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: simplecov
|
71
|
-
requirement: &
|
71
|
+
requirement: &75427890 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.4.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *75427890
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: database_cleaner
|
82
|
-
requirement: &
|
82
|
+
requirement: &75427470 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *75427470
|
91
91
|
description: hh:mm or mm:ss time field for mongoid
|
92
92
|
email: glebtv@gmail.com
|
93
93
|
executables: []
|
@@ -125,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
125
|
version: '0'
|
126
126
|
segments:
|
127
127
|
- 0
|
128
|
-
hash: -
|
128
|
+
hash: -523699249
|
129
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
130
|
none: false
|
131
131
|
requirements:
|