validates_overlap 0.1.2 → 0.1.3

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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZTc5NTQ4NDFlMTU1MjVkZDllOGEzNzVjYzhhYjNlY2VlODlhYzZmOA==
5
+ data.tar.gz: !binary |-
6
+ MzNmNWJiMjhjYWM4ODFmYTFhMGRhM2EyZjYwYTlkYjZlMGM2NTQwMg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NTIxNzM5ZWQ0ZjEzZDFiZGE3YWVjM2YzMzliZDgzN2E0MTdjNmFmZTlhNGQ0
10
+ M2FkOGM5ZGQ3M2JjYzc5OWNjNTVlNDg5YzIyY2U4NzUwYmVmMDZiMDMxNjhi
11
+ MzAxOTEyM2ZmZTdhZmVhYzNhOTE1Mzk1MDMyMjYxMWI3NWZjNTM=
12
+ data.tar.gz: !binary |-
13
+ YmU0MTU0MDNmMmQxMTdkYjQ5MmIzMjk1NGZkNjY1MzI3OTA3OTk1OTg0Nzg2
14
+ N2Y3NTFjZGJiODM4NTBlMzZjZmNiNjRiZTQxY2E0YjRlNDY0MjMyZGU1NDRi
15
+ MGMyM2U5Nzc4YmY2ZmJlMmY0YjBiOGY0ZTIxMzBiNGQ2NjgwYjQ=
data/.travis.yml CHANGED
@@ -1,5 +1,4 @@
1
1
  rvm:
2
- - 1.9.2
3
2
  - 1.9.3
4
3
 
5
4
 
data/Gemfile CHANGED
@@ -8,4 +8,5 @@ group :test, :development do
8
8
  gem "factory_girl_rails", '~>4.2'
9
9
  gem "bundler", '~>1.2'
10
10
  gem "jeweler", '~>1.8'
11
+ gem "pry"
11
12
  end
data/README.md ADDED
@@ -0,0 +1,62 @@
1
+ [![Build Status](https://secure.travis-ci.org/robinbortlik/validates_overlap.png?branch=master)](https://secure.travis-ci.org/robinbortlik/validates_overlap)
2
+
3
+ # ValidatesOverlap
4
+
5
+ This project rocks and uses MIT-LICENSE.
6
+
7
+ #### This gem is compatible with Rails 3 and 4.
8
+
9
+ #### When this gem should be helpful for you?
10
+ If you are developing Rails 3 app, let say some meeting planner and you can't save records which have time overlap.
11
+
12
+ #### Using
13
+
14
+ Add to your gemfile
15
+
16
+ ```ruby
17
+ gem 'validates_overlap'
18
+ ```
19
+
20
+ In your model
21
+
22
+ #### without scope
23
+
24
+ ```ruby
25
+ validates :starts_at, :ends_at, :overlap => true
26
+ ```
27
+
28
+ #### with scope
29
+
30
+ ```ruby
31
+ validates :starts_at, :ends_at, :overlap => {:scope => "user_id"}
32
+ ```
33
+
34
+ #### exclude edges
35
+
36
+ ```ruby
37
+ validates :starts_at, :ends_at, :overlap => {:exclude_edges => "starts_at"}
38
+ validates :starts_at, :ends_at, :overlap => {:exclude_edges => ["starts_at", "ends_at"]}
39
+ ```
40
+
41
+ #### define custom validation key and message
42
+
43
+ ```ruby
44
+ validates :starts_at, :ends_at, :overlap => {:message_title => "Some validation title", :message_content => "Some validation message"}
45
+ ```
46
+
47
+ #### with complicated relation relations
48
+
49
+ Example describes valildatation of user, positions and time slots.
50
+ User can't be assigned 2 times on position which is under time slot with time overlap.
51
+
52
+ ```ruby
53
+ class Position < ActiveRecord::Base
54
+ belongs_to :time_slot
55
+ belongs_to :user
56
+ validates "time_slots.starts_at", "time_slots.ends_at",
57
+ :overlap => {
58
+ :query_options => {:includes => :time_slot},
59
+ :scope => { "positions.user_id" => proc{|position| position.user_id} }
60
+ }
61
+ end
62
+ ```
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -15,9 +15,9 @@ class OverlapValidator < ActiveModel::EachValidator
15
15
  def validate(record)
16
16
  if self.find_crossed(record)
17
17
  if record.respond_to? attributes.first
18
- record.errors.add(attributes.first, :overlap)
18
+ record.errors.add(options[:message_title] || attributes.first, options[:message_content] || :overlap)
19
19
  else
20
- record.errors.add(:base, :overlap)
20
+ record.errors.add(options[:message_title] || :base, options[:message_content] || :overlap)
21
21
  end
22
22
  end
23
23
  end
@@ -0,0 +1,4 @@
1
+ class ActiveMeeting < ActiveRecord::Base
2
+ validates :starts_at, :ends_at, :overlap => {:query_options => {:active => true}}
3
+ scope :active, where(:is_active => true)
4
+ end
@@ -0,0 +1,14 @@
1
+ class CreateActiveMeetings < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :active_meetings do |t|
4
+ t.date :starts_at
5
+ t.date :ends_at
6
+ t.boolean :is_active
7
+ t.timestamps
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :active_meetings
13
+ end
14
+ end
@@ -11,7 +11,15 @@
11
11
  #
12
12
  # It's strongly recommended to check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 20121207162212) do
14
+ ActiveRecord::Schema.define(:version => 20130826155107) do
15
+
16
+ create_table "active_meetings", :force => true do |t|
17
+ t.date "starts_at"
18
+ t.date "ends_at"
19
+ t.boolean "is_active"
20
+ t.datetime "created_at", :null => false
21
+ t.datetime "updated_at", :null => false
22
+ end
15
23
 
16
24
  create_table "end_overlap_meetings", :force => true do |t|
17
25
  t.date "starts_at"
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :active_meeting do |u|
3
+ u.starts_at '2011-01-05'.to_date
4
+ u.ends_at '2011-01-08'.to_date
5
+ u.is_active true
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../../spec_helper'
2
+ require_relative '../factories/active_meeting'
3
+
4
+ describe ActiveMeeting do
5
+
6
+ before(:all) do
7
+ ActiveMeeting.delete_all
8
+ end
9
+
10
+ context "scoping" do
11
+ it "should apply scope" do
12
+ ActiveMeeting.should_receive(:active).with(true).and_call_original
13
+ active_meeting = ActiveMeeting.new
14
+ active_meeting.valid?
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,24 @@
1
+ describe OverlapValidator do
2
+
3
+
4
+ context "validation message" do
5
+
6
+ it "should have default message" do
7
+ subject = OverlapValidator.new({:attributes => [:starts_at, :ends_at]})
8
+ meeting = Meeting.new
9
+ subject.stub(:find_crossed){true}
10
+ subject.validate(meeting)
11
+ meeting.errors[:starts_at].should eq ["overlaps with another record"]
12
+ end
13
+
14
+ it "should be possible to configure message" do
15
+ subject = OverlapValidator.new({:attributes => [:starts_at, :ends_at]})
16
+ meeting = Meeting.new
17
+ subject.stub(:find_crossed){true}
18
+ subject.stub(:options){ {:message_title => :optional_key, :message_content => "Message content"} }
19
+ subject.validate(meeting)
20
+ meeting.errors.messages.should eq :optional_key => ["Message content"]
21
+ end
22
+
23
+ end
24
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,7 @@ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
5
  require "rails/test_help"
6
6
  require "rspec/rails"
7
7
  require "factory_girl_rails"
8
+ require 'pry'
8
9
 
9
10
 
10
11
  ActionMailer::Base.delivery_method = :test
@@ -5,21 +5,21 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "validates_overlap"
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Robin Bortlik"]
12
- s.date = "2013-03-05"
12
+ s.date = "2013-08-26"
13
13
  s.description = "It can be useful when you you are developing some app where you will work with meetings, events etc."
14
14
  s.email = "robinbortlik@gmail.com"
15
15
  s.extra_rdoc_files = [
16
- "README.rdoc"
16
+ "README.md"
17
17
  ]
18
18
  s.files = [
19
19
  ".travis.yml",
20
20
  "Gemfile",
21
21
  "MIT-LICENSE",
22
- "README.rdoc",
22
+ "README.md",
23
23
  "Rakefile",
24
24
  "VERSION",
25
25
  "lib/validates_overlap.rb",
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "spec/dummy/Rakefile",
29
29
  "spec/dummy/app/controllers/application_controller.rb",
30
30
  "spec/dummy/app/helpers/application_helper.rb",
31
+ "spec/dummy/app/models/active_meeting.rb",
31
32
  "spec/dummy/app/models/end_overlap_meeting.rb",
32
33
  "spec/dummy/app/models/meeting.rb",
33
34
  "spec/dummy/app/models/position.rb",
@@ -59,6 +60,7 @@ Gem::Specification.new do |s|
59
60
  "spec/dummy/db/migrate/20120509131012_create_start_overlap_meetings.rb",
60
61
  "spec/dummy/db/migrate/20120509131032_create_start_end_overlap_meetings.rb",
61
62
  "spec/dummy/db/migrate/20121207162212_create_time_slot.rb",
63
+ "spec/dummy/db/migrate/20130826155107_create_active_meetings.rb",
62
64
  "spec/dummy/db/schema.rb",
63
65
  "spec/dummy/public/404.html",
64
66
  "spec/dummy/public/422.html",
@@ -72,6 +74,7 @@ Gem::Specification.new do |s|
72
74
  "spec/dummy/public/javascripts/rails.js",
73
75
  "spec/dummy/public/stylesheets/.gitkeep",
74
76
  "spec/dummy/script/rails",
77
+ "spec/dummy/spec/factories/active_meeting.rb",
75
78
  "spec/dummy/spec/factories/end_overlap_meeting.rb",
76
79
  "spec/dummy/spec/factories/meeting.rb",
77
80
  "spec/dummy/spec/factories/position.rb",
@@ -80,6 +83,7 @@ Gem::Specification.new do |s|
80
83
  "spec/dummy/spec/factories/time_slot.rb",
81
84
  "spec/dummy/spec/factories/user.rb",
82
85
  "spec/dummy/spec/factories/user_meeting.rb",
86
+ "spec/dummy/spec/models/active_meetings_spec.rb",
83
87
  "spec/dummy/spec/models/end_overlap_meeting_spec.rb",
84
88
  "spec/dummy/spec/models/meeting_spec.rb",
85
89
  "spec/dummy/spec/models/position_spec.rb",
@@ -88,17 +92,18 @@ Gem::Specification.new do |s|
88
92
  "spec/dummy/spec/models/time_slot_spec.rb",
89
93
  "spec/dummy/spec/models/user_meeting_spec.rb",
90
94
  "spec/dummy/spec/models/user_spec.rb",
95
+ "spec/dummy/spec/overlap_validator_spec.rb",
91
96
  "spec/spec_helper.rb",
92
97
  "validates_overlap.gemspec"
93
98
  ]
94
99
  s.homepage = "http://github.com/robinbortlik/validates_overlap"
95
100
  s.licenses = ["MIT"]
96
101
  s.require_paths = ["lib"]
97
- s.rubygems_version = "1.8.24"
102
+ s.rubygems_version = "2.0.6"
98
103
  s.summary = "This gem helps validate records with time overlap."
99
104
 
100
105
  if s.respond_to? :specification_version then
101
- s.specification_version = 3
106
+ s.specification_version = 4
102
107
 
103
108
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
104
109
  s.add_runtime_dependency(%q<rails>, [">= 3.0.0"])
@@ -107,6 +112,7 @@ Gem::Specification.new do |s|
107
112
  s.add_development_dependency(%q<factory_girl_rails>, ["~> 4.2"])
108
113
  s.add_development_dependency(%q<bundler>, ["~> 1.2"])
109
114
  s.add_development_dependency(%q<jeweler>, ["~> 1.8"])
115
+ s.add_development_dependency(%q<pry>, [">= 0"])
110
116
  else
111
117
  s.add_dependency(%q<rails>, [">= 3.0.0"])
112
118
  s.add_dependency(%q<sqlite3>, ["~> 1.3"])
@@ -114,6 +120,7 @@ Gem::Specification.new do |s|
114
120
  s.add_dependency(%q<factory_girl_rails>, ["~> 4.2"])
115
121
  s.add_dependency(%q<bundler>, ["~> 1.2"])
116
122
  s.add_dependency(%q<jeweler>, ["~> 1.8"])
123
+ s.add_dependency(%q<pry>, [">= 0"])
117
124
  end
118
125
  else
119
126
  s.add_dependency(%q<rails>, [">= 3.0.0"])
@@ -122,6 +129,7 @@ Gem::Specification.new do |s|
122
129
  s.add_dependency(%q<factory_girl_rails>, ["~> 4.2"])
123
130
  s.add_dependency(%q<bundler>, ["~> 1.2"])
124
131
  s.add_dependency(%q<jeweler>, ["~> 1.8"])
132
+ s.add_dependency(%q<pry>, [">= 0"])
125
133
  end
126
134
  end
127
135
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_overlap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
5
- prerelease:
4
+ version: 0.1.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Robin Bortlik
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-05 00:00:00.000000000 Z
11
+ date: 2013-08-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: sqlite3
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec-rails
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: factory_girl_rails
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: bundler
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: jeweler
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ~>
100
88
  - !ruby/object:Gem::Version
@@ -102,23 +90,36 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ~>
108
95
  - !ruby/object:Gem::Version
109
96
  version: '1.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
110
111
  description: It can be useful when you you are developing some app where you will
111
112
  work with meetings, events etc.
112
113
  email: robinbortlik@gmail.com
113
114
  executables: []
114
115
  extensions: []
115
116
  extra_rdoc_files:
116
- - README.rdoc
117
+ - README.md
117
118
  files:
118
119
  - .travis.yml
119
120
  - Gemfile
120
121
  - MIT-LICENSE
121
- - README.rdoc
122
+ - README.md
122
123
  - Rakefile
123
124
  - VERSION
124
125
  - lib/validates_overlap.rb
@@ -127,6 +128,7 @@ files:
127
128
  - spec/dummy/Rakefile
128
129
  - spec/dummy/app/controllers/application_controller.rb
129
130
  - spec/dummy/app/helpers/application_helper.rb
131
+ - spec/dummy/app/models/active_meeting.rb
130
132
  - spec/dummy/app/models/end_overlap_meeting.rb
131
133
  - spec/dummy/app/models/meeting.rb
132
134
  - spec/dummy/app/models/position.rb
@@ -158,6 +160,7 @@ files:
158
160
  - spec/dummy/db/migrate/20120509131012_create_start_overlap_meetings.rb
159
161
  - spec/dummy/db/migrate/20120509131032_create_start_end_overlap_meetings.rb
160
162
  - spec/dummy/db/migrate/20121207162212_create_time_slot.rb
163
+ - spec/dummy/db/migrate/20130826155107_create_active_meetings.rb
161
164
  - spec/dummy/db/schema.rb
162
165
  - spec/dummy/public/404.html
163
166
  - spec/dummy/public/422.html
@@ -171,6 +174,7 @@ files:
171
174
  - spec/dummy/public/javascripts/rails.js
172
175
  - spec/dummy/public/stylesheets/.gitkeep
173
176
  - spec/dummy/script/rails
177
+ - spec/dummy/spec/factories/active_meeting.rb
174
178
  - spec/dummy/spec/factories/end_overlap_meeting.rb
175
179
  - spec/dummy/spec/factories/meeting.rb
176
180
  - spec/dummy/spec/factories/position.rb
@@ -179,6 +183,7 @@ files:
179
183
  - spec/dummy/spec/factories/time_slot.rb
180
184
  - spec/dummy/spec/factories/user.rb
181
185
  - spec/dummy/spec/factories/user_meeting.rb
186
+ - spec/dummy/spec/models/active_meetings_spec.rb
182
187
  - spec/dummy/spec/models/end_overlap_meeting_spec.rb
183
188
  - spec/dummy/spec/models/meeting_spec.rb
184
189
  - spec/dummy/spec/models/position_spec.rb
@@ -187,34 +192,31 @@ files:
187
192
  - spec/dummy/spec/models/time_slot_spec.rb
188
193
  - spec/dummy/spec/models/user_meeting_spec.rb
189
194
  - spec/dummy/spec/models/user_spec.rb
195
+ - spec/dummy/spec/overlap_validator_spec.rb
190
196
  - spec/spec_helper.rb
191
197
  - validates_overlap.gemspec
192
198
  homepage: http://github.com/robinbortlik/validates_overlap
193
199
  licenses:
194
200
  - MIT
201
+ metadata: {}
195
202
  post_install_message:
196
203
  rdoc_options: []
197
204
  require_paths:
198
205
  - lib
199
206
  required_ruby_version: !ruby/object:Gem::Requirement
200
- none: false
201
207
  requirements:
202
208
  - - ! '>='
203
209
  - !ruby/object:Gem::Version
204
210
  version: '0'
205
- segments:
206
- - 0
207
- hash: 2932668315205371865
208
211
  required_rubygems_version: !ruby/object:Gem::Requirement
209
- none: false
210
212
  requirements:
211
213
  - - ! '>='
212
214
  - !ruby/object:Gem::Version
213
215
  version: '0'
214
216
  requirements: []
215
217
  rubyforge_project:
216
- rubygems_version: 1.8.24
218
+ rubygems_version: 2.0.6
217
219
  signing_key:
218
- specification_version: 3
220
+ specification_version: 4
219
221
  summary: This gem helps validate records with time overlap.
220
222
  test_files: []
data/README.rdoc DELETED
@@ -1,47 +0,0 @@
1
- {<img src="https://secure.travis-ci.org/robinbortlik/validates_overlap.png?branch=master" alt="Build Status" />}[http://travis-ci.org/robinbortlik/validates_overlap]
2
-
3
- = ValidatesOverlap
4
-
5
- This project rocks and uses MIT-LICENSE.
6
-
7
- === This gem is available only for Rails 3.
8
-
9
- === When this gem should be helpful for you?
10
- If you are developing Rails 3 app, let say some meeting planner and you can't save records which have time overlap.
11
-
12
- === Using
13
-
14
- Add to your gemfile
15
- gem 'validates_overlap'
16
-
17
-
18
- In your model
19
-
20
- without scope
21
- validates :starts_at, :ends_at, :overlap => true
22
-
23
-
24
- with scope
25
- validates :starts_at, :ends_at, :overlap => {:scope => "user_id"}
26
-
27
-
28
- exclude edges
29
- validates :starts_at, :ends_at, :overlap => {:exclude_edges => "starts_at"}
30
- validates :starts_at, :ends_at, :overlap => {:exclude_edges => ["starts_at", "ends_at"]}
31
-
32
-
33
- with complicated relation relations
34
-
35
- Exaple describes valildatation of user, positions and time slots.
36
- User can't be assigned 2 times on position which is under time slot with time overlap.
37
-
38
-
39
- class Position < ActiveRecord::Base
40
- belongs_to :time_slot
41
- belongs_to :user
42
- validates "time_slots.starts_at", "time_slots.ends_at",
43
- :overlap => {
44
- :query_options => {:includes => :time_slot},
45
- :scope => { "positions.user_id" => proc{|position| position.user_id} }
46
- }
47
- end