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 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
-