automagical_validations 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.1
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.1.1"
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-06-03"
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
- types_to_validate.map!{ |type| type.to_sym }
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 types_to_validate.include? column.type
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
- date: 2012-06-03 00:00:00 Z
14
- dependencies:
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: &id001 !ruby/object:Gem::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: *id001
26
- - !ruby/object:Gem::Dependency
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: &id002 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
29
33
  none: false
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
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: &id003 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
40
49
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
45
54
  type: :development
46
55
  prerelease: false
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
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: &id004 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
51
65
  none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
56
70
  type: :development
57
71
  prerelease: false
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
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: &id005 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
62
81
  none: false
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: "0"
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
67
86
  type: :development
68
87
  prerelease: false
69
- version_requirements: *id005
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
- hash: -3639426043304595810
106
- segments:
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ segments:
107
128
  - 0
108
- version: "0"
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: "0"
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
-