validates_overlap 0.3.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 28dc14c113fd58e71304d57846deee7548ea3a49
4
- data.tar.gz: fe7098e0b7a58816e3cf5b3982b6a440b1812351
3
+ metadata.gz: e7a51580e30d5481872fae597e3e0cc31969a94b
4
+ data.tar.gz: 91e351d1b763236f5e87daf4885438818631d881
5
5
  SHA512:
6
- metadata.gz: 105ddbb581b205d1a3f3fc8a17ec5c4432737b9ab27da7e6fb3b85419b7ad791e0324dac686d1ae7c82ac13e1983c4d301a4d3e50368ba07cdd2dcc3fa9de062
7
- data.tar.gz: af03aa8e6905d9b6b2a7eb0230c153ab671d3aec8eec193733445f400afb1afee5276ea75ff9ddb53e6b90e101d169660921c0b5f28cab84c3e2f06b481d8274
6
+ metadata.gz: 61febadf4ae4e2ccf328f6e91d42f1ced3eab42431f2f44019c6bf85a6197e377add81dee66f673afaeb0219ae081a0d624c78685086f734354136a186f61fce
7
+ data.tar.gz: 5e0090bb470717b5b8441ad2e0ab50a11fc5976447d384aa9a4e37110c7d884f728da6590ef2d621137426b6bbbeb6c58912629197a5eb56e4e489a2e91a06e5
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ .bundle/
2
+ .idea/
3
+ log/*.log
4
+ pkg/
5
+ spec/dummy/db/*.sqlite3
6
+ spec/dummy/log/*.log
7
+ spec/dummy/tmp/
8
+ database.yml
9
+ Gemfile*.lock
10
+ .DS_Store
data/Rakefile CHANGED
@@ -1,38 +1,25 @@
1
1
  require 'rubygems'
2
2
  require 'bundler'
3
+ require 'rake'
4
+ require 'rspec/core'
5
+ require 'rspec/core/rake_task'
6
+ require 'rdoc/task'
7
+
3
8
  begin
9
+ Bundler::GemHelper.install_tasks
4
10
  Bundler.setup(:default, :development)
5
11
  rescue Bundler::BundlerError => e
6
12
  $stderr.puts e.message
7
13
  $stderr.puts "Run `bundle install` to install missing gems"
8
14
  exit e.status_code
9
15
  end
10
- require 'rake'
11
16
 
12
- require 'jeweler'
13
- Jeweler::Tasks.new do |gem|
14
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
- gem.name = "validates_overlap"
16
- gem.homepage = "http://github.com/robinbortlik/validates_overlap"
17
- gem.license = "MIT"
18
- gem.summary = "This gem helps validate records with time overlap."
19
- gem.description = "It can be useful when you you are developing some app where you will work with meetings, events etc."
20
- gem.email = "robinbortlik@gmail.com"
21
- gem.authors = ["Robin Bortlik"]
22
- # Include your dependencies below. Runtime dependencies are required when using your gem,
23
- # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
- end
25
- Jeweler::RubygemsDotOrgTasks.new
26
-
27
- require 'rspec/core'
28
- require 'rspec/core/rake_task'
29
17
  RSpec::Core::RakeTask.new(:spec)
18
+
30
19
  task :default => :spec
31
20
 
32
- require 'rdoc/task'
33
21
  Rake::RDocTask.new do |rdoc|
34
22
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
35
-
36
23
  rdoc.rdoc_dir = 'rdoc'
37
24
  rdoc.title = "validates_overlap #{version}"
38
25
  rdoc.rdoc_files.include('README*')
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -1,4 +1,5 @@
1
1
  require 'active_support/i18n'
2
+
2
3
  I18n.load_path << File.dirname(__FILE__) + '/locale/en.yml'
3
4
 
4
5
  class OverlapValidator < ActiveModel::EachValidator
@@ -85,15 +86,19 @@ class OverlapValidator < ActiveModel::EachValidator
85
86
  raise "Validation of time range must be defined by 2 attributes" unless attributes.size == 2
86
87
  end
87
88
 
89
+ def primary_key(record)
90
+ record.class.columns.find(&:primary).name
91
+ end
88
92
 
89
93
  # Generate sql condition for time range cross
90
94
  def generate_overlap_sql_conditions(record)
91
95
  starts_at_attr, ends_at_attr = attributes_to_sql(record)
92
96
  main_condition = condition_string(starts_at_attr, ends_at_attr)
97
+ primary_key_name = primary_key(record)
93
98
  if record.new_record?
94
99
  self.sql_conditions = main_condition
95
100
  else
96
- self.sql_conditions = "#{main_condition} AND #{record_table_name(record)}.id != #{record.id}"
101
+ self.sql_conditions = "#{main_condition} AND #{record_table_name(record)}.#{primary_key_name} != #{record.send(primary_key_name)}"
97
102
  end
98
103
  end
99
104
 
@@ -1,140 +1,27 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
5
- # stub: validates_overlap 0.3.0 ruby lib
6
2
 
7
3
  Gem::Specification.new do |s|
8
4
  s.name = "validates_overlap"
9
- s.version = "0.3.0"
5
+ s.version = "0.4.0"
10
6
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
7
  s.authors = ["Robin Bortlik"]
13
- s.date = "2014-04-19"
8
+ s.date = "2013-10-18"
14
9
  s.description = "It can be useful when you you are developing some app where you will work with meetings, events etc."
15
10
  s.email = "robinbortlik@gmail.com"
16
11
  s.extra_rdoc_files = [
17
12
  "README.md"
18
13
  ]
19
- s.files = [
20
- ".travis.yml",
21
- "Gemfile",
22
- "Gemfile.rails30",
23
- "Gemfile.rails32",
24
- "Gemfile.rails40",
25
- "Gemfile.rails41",
26
- "MIT-LICENSE",
27
- "README.md",
28
- "Rakefile",
29
- "VERSION",
30
- "lib/validates_overlap.rb",
31
- "lib/validates_overlap/locale/en.yml",
32
- "lib/validates_overlap/overlap_validator.rb",
33
- "spec/dummy/Rakefile",
34
- "spec/dummy/app/controllers/application_controller.rb",
35
- "spec/dummy/app/helpers/application_helper.rb",
36
- "spec/dummy/app/models/active_meeting.rb",
37
- "spec/dummy/app/models/end_overlap_meeting.rb",
38
- "spec/dummy/app/models/meeting.rb",
39
- "spec/dummy/app/models/position.rb",
40
- "spec/dummy/app/models/start_end_overlap_meeting.rb",
41
- "spec/dummy/app/models/start_overlap_meeting.rb",
42
- "spec/dummy/app/models/time_slot.rb",
43
- "spec/dummy/app/models/user.rb",
44
- "spec/dummy/app/models/user_meeting.rb",
45
- "spec/dummy/app/views/layouts/application.html.erb",
46
- "spec/dummy/config.ru",
47
- "spec/dummy/config/application.rb",
48
- "spec/dummy/config/boot.rb",
49
- "spec/dummy/config/database.yml",
50
- "spec/dummy/config/environment.rb",
51
- "spec/dummy/config/environments/development.rb",
52
- "spec/dummy/config/environments/production.rb",
53
- "spec/dummy/config/environments/test.rb",
54
- "spec/dummy/config/initializers/backtrace_silencers.rb",
55
- "spec/dummy/config/initializers/inflections.rb",
56
- "spec/dummy/config/initializers/mime_types.rb",
57
- "spec/dummy/config/initializers/secret_token.rb",
58
- "spec/dummy/config/initializers/session_store.rb",
59
- "spec/dummy/config/locales/en.yml",
60
- "spec/dummy/config/routes.rb",
61
- "spec/dummy/db/migrate/20110406082020_create_meetings.rb",
62
- "spec/dummy/db/migrate/20110406082053_create_users.rb",
63
- "spec/dummy/db/migrate/20110407060725_create_user_meetings.rb",
64
- "spec/dummy/db/migrate/20120509130956_create_end_overlap_meetings.rb",
65
- "spec/dummy/db/migrate/20120509131012_create_start_overlap_meetings.rb",
66
- "spec/dummy/db/migrate/20120509131032_create_start_end_overlap_meetings.rb",
67
- "spec/dummy/db/migrate/20121207162212_create_time_slot.rb",
68
- "spec/dummy/db/migrate/20130826155107_create_active_meetings.rb",
69
- "spec/dummy/db/schema.rb",
70
- "spec/dummy/public/404.html",
71
- "spec/dummy/public/422.html",
72
- "spec/dummy/public/500.html",
73
- "spec/dummy/public/favicon.ico",
74
- "spec/dummy/public/javascripts/application.js",
75
- "spec/dummy/public/javascripts/controls.js",
76
- "spec/dummy/public/javascripts/dragdrop.js",
77
- "spec/dummy/public/javascripts/effects.js",
78
- "spec/dummy/public/javascripts/prototype.js",
79
- "spec/dummy/public/javascripts/rails.js",
80
- "spec/dummy/public/stylesheets/.gitkeep",
81
- "spec/dummy/script/rails",
82
- "spec/dummy/spec/factories/active_meeting.rb",
83
- "spec/dummy/spec/factories/end_overlap_meeting.rb",
84
- "spec/dummy/spec/factories/meeting.rb",
85
- "spec/dummy/spec/factories/position.rb",
86
- "spec/dummy/spec/factories/start_end_overlap_meeting.rb",
87
- "spec/dummy/spec/factories/start_overlap_meeting.rb",
88
- "spec/dummy/spec/factories/time_slot.rb",
89
- "spec/dummy/spec/factories/user.rb",
90
- "spec/dummy/spec/factories/user_meeting.rb",
91
- "spec/dummy/spec/models/active_meetings_spec.rb",
92
- "spec/dummy/spec/models/end_overlap_meeting_spec.rb",
93
- "spec/dummy/spec/models/meeting_spec.rb",
94
- "spec/dummy/spec/models/position_spec.rb",
95
- "spec/dummy/spec/models/start_end_overlap_meeting_spec.rb",
96
- "spec/dummy/spec/models/start_overlap_meeting_spec.rb",
97
- "spec/dummy/spec/models/time_slot_spec.rb",
98
- "spec/dummy/spec/models/user_meeting_spec.rb",
99
- "spec/dummy/spec/models/user_spec.rb",
100
- "spec/dummy/spec/overlap_validator_spec.rb",
101
- "spec/spec_helper.rb",
102
- "validates_overlap.gemspec"
103
- ]
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- spec/dummy/spec/*`.split("\n")
16
+
104
17
  s.homepage = "http://github.com/robinbortlik/validates_overlap"
105
18
  s.licenses = ["MIT"]
106
19
  s.require_paths = ["lib"]
107
- s.rubygems_version = "2.1.11"
108
20
  s.summary = "This gem helps validate records with time overlap."
109
-
110
- if s.respond_to? :specification_version then
111
- s.specification_version = 4
112
-
113
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
114
- s.add_runtime_dependency(%q<validates_overlap>, [">= 0"])
115
- s.add_development_dependency(%q<sqlite3>, [">= 0"])
116
- s.add_development_dependency(%q<rspec-rails>, ["~> 2.12"])
117
- s.add_development_dependency(%q<factory_girl_rails>, ["~> 4.2"])
118
- s.add_development_dependency(%q<bundler>, ["~> 1.2"])
119
- s.add_development_dependency(%q<jeweler>, ["~> 1.8"])
120
- s.add_development_dependency(%q<pry>, [">= 0"])
121
- else
122
- s.add_dependency(%q<validates_overlap>, [">= 0"])
123
- s.add_dependency(%q<sqlite3>, [">= 0"])
124
- s.add_dependency(%q<rspec-rails>, ["~> 2.12"])
125
- s.add_dependency(%q<factory_girl_rails>, ["~> 4.2"])
126
- s.add_dependency(%q<bundler>, ["~> 1.2"])
127
- s.add_dependency(%q<jeweler>, ["~> 1.8"])
128
- s.add_dependency(%q<pry>, [">= 0"])
129
- end
130
- else
131
- s.add_dependency(%q<validates_overlap>, [">= 0"])
132
- s.add_dependency(%q<sqlite3>, [">= 0"])
133
- s.add_dependency(%q<rspec-rails>, ["~> 2.12"])
134
- s.add_dependency(%q<factory_girl_rails>, ["~> 4.2"])
135
- s.add_dependency(%q<bundler>, ["~> 1.2"])
136
- s.add_dependency(%q<jeweler>, ["~> 1.8"])
137
- s.add_dependency(%q<pry>, [">= 0"])
138
- end
21
+ s.add_dependency "rails", ">= 3.0.0"
22
+ s.add_development_dependency "sqlite3"
23
+ s.add_development_dependency "rspec-rails", '~>2.12'
24
+ s.add_development_dependency "factory_girl_rails", '~>4.2'
25
+ s.add_development_dependency "bundler", '~>1.2'
26
+ s.add_development_dependency "pry"
139
27
  end
140
-
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_overlap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Bortlik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-19 00:00:00.000000000 Z
11
+ date: 2013-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: validates_overlap
14
+ name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sqlite3
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.2'
83
- - !ruby/object:Gem::Dependency
84
- name: jeweler
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: '1.8'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ~>
95
- - !ruby/object:Gem::Version
96
- version: '1.8'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: pry
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +102,7 @@ extensions: []
116
102
  extra_rdoc_files:
117
103
  - README.md
118
104
  files:
105
+ - .gitignore
119
106
  - .travis.yml
120
107
  - Gemfile
121
108
  - Gemfile.rails30
@@ -219,8 +206,27 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
206
  version: '0'
220
207
  requirements: []
221
208
  rubyforge_project:
222
- rubygems_version: 2.1.11
209
+ rubygems_version: 2.2.2
223
210
  signing_key:
224
211
  specification_version: 4
225
212
  summary: This gem helps validate records with time overlap.
226
- test_files: []
213
+ test_files:
214
+ - spec/dummy/spec/factories/active_meeting.rb
215
+ - spec/dummy/spec/factories/end_overlap_meeting.rb
216
+ - spec/dummy/spec/factories/meeting.rb
217
+ - spec/dummy/spec/factories/position.rb
218
+ - spec/dummy/spec/factories/start_end_overlap_meeting.rb
219
+ - spec/dummy/spec/factories/start_overlap_meeting.rb
220
+ - spec/dummy/spec/factories/time_slot.rb
221
+ - spec/dummy/spec/factories/user.rb
222
+ - spec/dummy/spec/factories/user_meeting.rb
223
+ - spec/dummy/spec/models/active_meetings_spec.rb
224
+ - spec/dummy/spec/models/end_overlap_meeting_spec.rb
225
+ - spec/dummy/spec/models/meeting_spec.rb
226
+ - spec/dummy/spec/models/position_spec.rb
227
+ - spec/dummy/spec/models/start_end_overlap_meeting_spec.rb
228
+ - spec/dummy/spec/models/start_overlap_meeting_spec.rb
229
+ - spec/dummy/spec/models/time_slot_spec.rb
230
+ - spec/dummy/spec/models/user_meeting_spec.rb
231
+ - spec/dummy/spec/models/user_spec.rb
232
+ - spec/dummy/spec/overlap_validator_spec.rb