automagical_validations 0.1.1 → 0.2.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.md +6 -0
- data/VERSION +1 -1
- data/automagical_validations.gemspec +2 -2
- data/lib/automagical_validations.rb +13 -3
- data/spec/automagical_validations_spec.rb +21 -0
- metadata +81 -62
data/README.md
CHANGED
@@ -10,6 +10,12 @@ automagical_validations defines an `ActiveRecord::Base` class method that takes
|
|
10
10
|
automagically_validate :string, :text
|
11
11
|
end
|
12
12
|
|
13
|
+
Column types along with additional options can be passed in as a hash:
|
14
|
+
|
15
|
+
class Post < ActiveRecord::Base
|
16
|
+
automagically_validate :string => {:message => 'Custom message'}
|
17
|
+
end
|
18
|
+
|
13
19
|
##What it does
|
14
20
|
###Column maximum length validations
|
15
21
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "automagical_validations"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Toms Mikoss"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-07-11"
|
13
13
|
s.description = "ActiveRecord extension that allows to infer validation rules from database"
|
14
14
|
s.email = "toms.mikoss@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -1,11 +1,21 @@
|
|
1
1
|
module AutomagicalValidations
|
2
2
|
def automagically_validate(*types_to_validate)
|
3
3
|
return unless self.table_exists?
|
4
|
-
|
4
|
+
|
5
|
+
validation_settings = {}
|
6
|
+
|
7
|
+
if types_to_validate.first.is_a? Hash
|
8
|
+
validation_settings = types_to_validate.first
|
9
|
+
validation_settings.symbolize_keys!
|
10
|
+
else
|
11
|
+
types_to_validate.each do |type|
|
12
|
+
validation_settings[type.to_sym] = {}
|
13
|
+
end
|
14
|
+
end
|
5
15
|
|
6
16
|
columns.each do |column|
|
7
17
|
# Do not touch the columns not specified
|
8
|
-
next unless
|
18
|
+
next unless validation_settings[column.type]
|
9
19
|
|
10
20
|
# Do not define validator on columns that have no limit information, even if asked to
|
11
21
|
next unless column.limit
|
@@ -15,7 +25,7 @@ module AutomagicalValidations
|
|
15
25
|
validator.is_a?(ActiveModel::Validations::LengthValidator) && validator.options[:maximum]
|
16
26
|
end
|
17
27
|
|
18
|
-
validates_length_of column.name, :maximum => column.limit
|
28
|
+
validates_length_of column.name, validation_settings[column.type].merge({:maximum => column.limit})
|
19
29
|
end
|
20
30
|
end
|
21
31
|
end
|
@@ -173,5 +173,26 @@ describe "AutomagicalValidations" do
|
|
173
173
|
end
|
174
174
|
end
|
175
175
|
end
|
176
|
+
|
177
|
+
context "passing options to validator" do
|
178
|
+
let(:validator_options){ {:message => 'Custom message'} }
|
179
|
+
|
180
|
+
before(:all) do
|
181
|
+
Post.rebuild_table do |t|
|
182
|
+
t.string :title
|
183
|
+
t.text :content
|
184
|
+
end
|
185
|
+
|
186
|
+
Post.automagically_validate :string => validator_options
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should define validator" do
|
190
|
+
Post.should have(1).validators_on(:title)
|
191
|
+
end
|
192
|
+
|
193
|
+
it "should define options for validator" do
|
194
|
+
Post.validators_on(:title).first.options[:message].should eq validator_options[:message]
|
195
|
+
end
|
196
|
+
end
|
176
197
|
end
|
177
198
|
end
|
metadata
CHANGED
@@ -1,82 +1,104 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: automagical_validations
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.1
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Toms Mikoss
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-07-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: activerecord
|
17
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
|
-
requirements:
|
20
|
-
- -
|
21
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
22
21
|
version: 3.0.0
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements:
|
26
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.0.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
27
31
|
name: rspec
|
28
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
29
33
|
none: false
|
30
|
-
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
|
-
version_requirements:
|
37
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
38
47
|
name: jeweler
|
39
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
40
49
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version:
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
45
54
|
type: :development
|
46
55
|
prerelease: false
|
47
|
-
version_requirements:
|
48
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
49
63
|
name: mysql2
|
50
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
51
65
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version:
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
56
70
|
type: :development
|
57
71
|
prerelease: false
|
58
|
-
version_requirements:
|
59
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
60
79
|
name: activerecord-jdbcmysql-adapter
|
61
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
62
81
|
none: false
|
63
|
-
requirements:
|
64
|
-
- -
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version:
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
67
86
|
type: :development
|
68
87
|
prerelease: false
|
69
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
70
94
|
description: ActiveRecord extension that allows to infer validation rules from database
|
71
95
|
email: toms.mikoss@gmail.com
|
72
96
|
executables: []
|
73
|
-
|
74
97
|
extensions: []
|
75
|
-
|
76
|
-
extra_rdoc_files:
|
98
|
+
extra_rdoc_files:
|
77
99
|
- LICENSE.txt
|
78
100
|
- README.md
|
79
|
-
files:
|
101
|
+
files:
|
80
102
|
- .document
|
81
103
|
- .rspec
|
82
104
|
- .travis.yml
|
@@ -90,34 +112,31 @@ files:
|
|
90
112
|
- spec/automagical_validations_spec.rb
|
91
113
|
- spec/spec_helper.rb
|
92
114
|
homepage: http://github.com/tmikoss/automagical_validations
|
93
|
-
licenses:
|
115
|
+
licenses:
|
94
116
|
- MIT
|
95
117
|
post_install_message:
|
96
118
|
rdoc_options: []
|
97
|
-
|
98
|
-
require_paths:
|
119
|
+
require_paths:
|
99
120
|
- lib
|
100
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
122
|
none: false
|
102
|
-
requirements:
|
103
|
-
- -
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
segments:
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
segments:
|
107
128
|
- 0
|
108
|
-
|
109
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
hash: -795993171
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
131
|
none: false
|
111
|
-
requirements:
|
112
|
-
- -
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version:
|
132
|
+
requirements:
|
133
|
+
- - ! '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
115
136
|
requirements: []
|
116
|
-
|
117
137
|
rubyforge_project:
|
118
138
|
rubygems_version: 1.8.24
|
119
139
|
signing_key:
|
120
140
|
specification_version: 3
|
121
141
|
summary: ActiveRecord extension that allows to infer validation rules from database
|
122
142
|
test_files: []
|
123
|
-
|