validates_overlap 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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