validates_lengths_from_database 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.rdoc +4 -0
- data/README.rdoc +21 -1
- data/lib/validates_lengths_from_database.rb +10 -1
- data/lib/validates_lengths_from_database/version.rb +1 -1
- data/spec/validates_lengths_from_database_spec.rb +36 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d17fe52e66ac67d1cfc3a81dd72fee22a6050b7
|
4
|
+
data.tar.gz: 636155e6624043e9981dd9961eb990aa7059febf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d500d14353f1297f9dc3c35a5333e4cedd81fcc1172867264d77299550c5fd3de9e58ae56231c47b09da517ef6e0f3fe2382a75bfdb95d5f1f6981ff706d5219
|
7
|
+
data.tar.gz: 445d4c872b1add3772218b3811e112823981935d4cd2f477fccae00fb9cfa56c11dbe49ff5fd10b76b0e0acc09e6ec0ebc9c6683300e3761dd27fa03f9c3650f
|
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -50,7 +50,27 @@ Or to set the limit differently for string (VARCHAR) and (TEXT) columns:
|
|
50
50
|
validates_lengths_from_database :limit => {:string => 255, :text => 4092}
|
51
51
|
end
|
52
52
|
|
53
|
-
|
53
|
+
Since v0.5.2, it's possible to use the `validate_lengths_from_database`
|
54
|
+
on an abstract parent (without a table), such as +ApplicationRecord+ or <tt>ActiveRecord::Base</tt>.
|
55
|
+
|
56
|
+
class ApplicationRecord < ActiveRecord::Base
|
57
|
+
self.abstract_class = true
|
58
|
+
validates_lengths_from_database :limit => 255
|
59
|
+
end
|
60
|
+
|
61
|
+
# This will use the validations with default options (from parent)
|
62
|
+
class Post < ApplicationRecord
|
63
|
+
end
|
64
|
+
|
65
|
+
# This will use the validations, with overriding the default options (the limit will not be applied)
|
66
|
+
class User < ApplicationRecord
|
67
|
+
validates_lengths_from_database :only => [:name]
|
68
|
+
end
|
69
|
+
|
70
|
+
# This will use the validations, using the default options + adding some class specific customizations
|
71
|
+
class Comment < ApplicationRecord
|
72
|
+
validate_lengths_from_database_options[:only] << :name
|
73
|
+
end
|
54
74
|
|
55
75
|
== Running Tests
|
56
76
|
|
@@ -26,7 +26,16 @@ module ValidatesLengthsFromDatabase
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def validate_lengths_from_database_options
|
29
|
-
@validate_lengths_from_database_options
|
29
|
+
if defined? @validate_lengths_from_database_options
|
30
|
+
@validate_lengths_from_database_options
|
31
|
+
else
|
32
|
+
# in case we inherited the validations, copy the options so that we can update it in child
|
33
|
+
# without affecting the parent
|
34
|
+
@validate_lengths_from_database_options = superclass.validate_lengths_from_database_options.inject({}) do |hash, (key, value)|
|
35
|
+
value = value.dup if value.respond_to?(:dup)
|
36
|
+
hash.update(key => value)
|
37
|
+
end
|
38
|
+
end
|
30
39
|
end
|
31
40
|
end
|
32
41
|
|
@@ -26,6 +26,11 @@ describe ValidatesLengthsFromDatabase do
|
|
26
26
|
ActiveSupport::Deprecation.silenced = true
|
27
27
|
end
|
28
28
|
|
29
|
+
class ApplicationRecord < ActiveRecord::Base
|
30
|
+
self.abstract_class = true
|
31
|
+
validates_lengths_from_database :limit => 255
|
32
|
+
end
|
33
|
+
|
29
34
|
context "Model without associated table" do
|
30
35
|
specify "defining validates_lengths_from_database should not raise an error" do
|
31
36
|
lambda {
|
@@ -109,7 +114,7 @@ describe ValidatesLengthsFromDatabase do
|
|
109
114
|
|
110
115
|
class ArticleValidateText < ActiveRecord::Base
|
111
116
|
self.table_name = "articles"
|
112
|
-
validates_lengths_from_database :only => [:
|
117
|
+
validates_lengths_from_database :only => [:string_1]
|
113
118
|
end
|
114
119
|
end
|
115
120
|
|
@@ -130,6 +135,36 @@ describe ValidatesLengthsFromDatabase do
|
|
130
135
|
end
|
131
136
|
end
|
132
137
|
|
138
|
+
context "inheritance" do
|
139
|
+
before do
|
140
|
+
class ArticleValidateChild < ApplicationRecord
|
141
|
+
self.table_name = "articles"
|
142
|
+
validates_lengths_from_database :only => [:string_1]
|
143
|
+
end
|
144
|
+
class ArticleValidateChildOverwrite < ArticleValidateChild
|
145
|
+
validate_lengths_from_database_options[:only] << :string_2
|
146
|
+
end
|
147
|
+
class ArticleWithoutValidations < ApplicationRecord
|
148
|
+
self.table_name = "articles"
|
149
|
+
validates_lengths_from_database :only => []
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should inherit the validation options from the parent" do
|
154
|
+
@article = ArticleValidateChild.new(LONG_ATTRIBUTES)
|
155
|
+
@article.valid?
|
156
|
+
@article.errors["string_1"].join.should =~ /too long/
|
157
|
+
@article.errors["string_2"].join.should_not =~ /too long/
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should allow changing the validation options of child" do
|
161
|
+
@article = ArticleValidateChildOverwrite.new(LONG_ATTRIBUTES)
|
162
|
+
@article.valid?
|
163
|
+
@article.errors["string_1"].join.should =~ /too long/
|
164
|
+
@article.errors["string_2"].join.should =~ /too long/
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
133
168
|
context "an article with short attributes" do
|
134
169
|
before { @article = ArticleValidateAll.new(SHORT_ATTRIBUTES); @article.valid? }
|
135
170
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_lengths_from_database
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Hughes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|