validation_hints 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/active_model/hints.rb +27 -8
- data/lib/validation_hints/locale/en.yml +11 -7
- data/lib/validation_hints/version.rb +1 -1
- metadata +2 -2
data/lib/active_model/hints.rb
CHANGED
@@ -11,8 +11,18 @@ module ActiveModel
|
|
11
11
|
include Enumerable
|
12
12
|
|
13
13
|
CALLBACKS_OPTIONS = [:if, :unless, :on, :allow_nil, :allow_blank, :strict]
|
14
|
-
MESSAGES_FOR_VALIDATORS = %w(confirmation acceptance presence uniqueness format
|
15
|
-
MESSAGES_FOR_OPTIONS = %w(within in is minimum maximum greater_than greater_than_or_equal_to equal_to less_than less_than_or_equal_to odd even)
|
14
|
+
MESSAGES_FOR_VALIDATORS = %w(confirmation acceptance presence uniqueness format associated numericality)
|
15
|
+
MESSAGES_FOR_OPTIONS = %w(within in is minimum maximum greater_than greater_than_or_equal_to equal_to less_than less_than_or_equal_to odd even only_integer)
|
16
|
+
OPTIONS_THAT_WE_DONT_USE_YET = {
|
17
|
+
:acceptance => :acceptance
|
18
|
+
|
19
|
+
}
|
20
|
+
VALIDATORS_THAT_WE_DONT_KNOW_WHAT_TO_DO_WITH = %w(validates_associated)
|
21
|
+
|
22
|
+
# Should virtual element for
|
23
|
+
# validates :email, :confirmation => true
|
24
|
+
# validates :email_confirmation, :presence => true
|
25
|
+
# also have a hint?
|
16
26
|
|
17
27
|
attr_reader :messages
|
18
28
|
|
@@ -36,12 +46,19 @@ module ActiveModel
|
|
36
46
|
@base.class.validators_on(attribute).map do |v|
|
37
47
|
# check for validators that have no options
|
38
48
|
validator = v.class.to_s.split('::').last.downcase.gsub('validator','')
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
v.options.
|
43
|
-
|
44
|
-
|
49
|
+
message_key = validator
|
50
|
+
message_key = [validator, ".must_be_a_number"].join('.') if validator == 'numericality' # create an option for numericality; the way YAML works a key (numericality) with subkeys (greater_than, etc etc) can not have a string itself. So we create a subkey for numericality
|
51
|
+
message_key = [validator, v.options[:message]].join('.') if v.options[:message].is_a?(Symbol) # if a message was supplied as a symbol, we use it instead
|
52
|
+
if v.options[:message].is_a?(Symbol)
|
53
|
+
result << generate_message(attribute, message_key, v.options)
|
54
|
+
else
|
55
|
+
result << generate_message(attribute, message_key, v.options) if MESSAGES_FOR_VALIDATORS.include?(validator)
|
56
|
+
v.options.each do |o|
|
57
|
+
if MESSAGES_FOR_OPTIONS.include?(o.first.to_s)
|
58
|
+
count = o.last
|
59
|
+
count = o.last.to_sentence if %w(inclusion exclusion).include?(validator)
|
60
|
+
result << generate_message(attribute, [ validator, o.first.to_s ].join('.'), { :count => count } )
|
61
|
+
end
|
45
62
|
end
|
46
63
|
end
|
47
64
|
end
|
@@ -264,6 +281,7 @@ module ActiveModel
|
|
264
281
|
end
|
265
282
|
|
266
283
|
def generate_message(attribute, type, options = {})
|
284
|
+
#options.delete(:message) if options[:message].is_a?(Symbol)
|
267
285
|
if @base.class.respond_to?(:i18n_scope)
|
268
286
|
defaults = @base.class.lookup_ancestors.map do |klass|
|
269
287
|
[ :"#{@base.class.i18n_scope}.hints.models.#{klass.model_name.i18n_key}.attributes.#{attribute}.#{type}",
|
@@ -273,6 +291,7 @@ module ActiveModel
|
|
273
291
|
defaults = []
|
274
292
|
end
|
275
293
|
|
294
|
+
defaults << options[:message] # defaults << options.delete(:message)
|
276
295
|
defaults << :"#{@base.class.i18n_scope}.hints.messages.#{type}" if @base.class.respond_to?(:i18n_scope)
|
277
296
|
defaults << :"hints.attributes.#{attribute}.#{type}"
|
278
297
|
defaults << :"hints.messages.#{type}"
|
@@ -10,21 +10,24 @@ en:
|
|
10
10
|
# The values :model, :attribute and :value are always available for interpolation
|
11
11
|
# The value :count is available when applicable. Can be used for pluralization.
|
12
12
|
messages:
|
13
|
-
inclusion:
|
14
|
-
|
13
|
+
inclusion:
|
14
|
+
in: "must be one of %{count}"
|
15
|
+
exclusion:
|
16
|
+
in: "must not be one of %{count}"
|
15
17
|
format: "what's this"
|
16
18
|
associated: "is invalid"
|
17
19
|
uniqueness: "must be unique"
|
18
20
|
confirmation: "doesn't match confirmation"
|
19
|
-
|
21
|
+
acceptance: "must be accepted"
|
20
22
|
presence: "can't be blank"
|
21
23
|
length:
|
22
24
|
maximum: "must not be longer than %{count} characters"
|
23
25
|
minimum: "must not be shorter than %{count} characters"
|
24
|
-
|
25
|
-
|
26
|
-
numericality:
|
27
|
-
|
26
|
+
is: "must be exactly %{count} characters"
|
27
|
+
radiolaria: "must be between %{minimum} and %{maximum} characters"
|
28
|
+
numericality:
|
29
|
+
must_be_a_number: "must be a number"
|
30
|
+
only_integer: "must be an integer"
|
28
31
|
greater_than: "must be greater than %{count}"
|
29
32
|
greater_than_or_equal_to: "must be greater than or equal to %{count}"
|
30
33
|
equal_to: "must be equal to %{count}"
|
@@ -32,3 +35,4 @@ en:
|
|
32
35
|
less_than_or_equal_to: "must be less than or equal to %{count}"
|
33
36
|
odd: "must be odd"
|
34
37
|
even: "must be even"
|
38
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validation_hints
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rvm
|