aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib
diff options
context:
space:
mode:
authorSamuel Kadolph <samuel@kadolph.com>2010-12-09 13:30:02 -0500
committerSantiago Pastorino <santiago@wyeworks.com>2010-12-11 16:35:18 -0200
commit2650742bd02e108bc4ccdc59efa54b4916e3a443 (patch)
treeed314872ec7bbe9435922a72e8aff14e0cb6edd2 /activemodel/lib
parent307443972c5f6de959a5401eec76ca327484b10c (diff)
downloadrails-2650742bd02e108bc4ccdc59efa54b4916e3a443.tar.gz
rails-2650742bd02e108bc4ccdc59efa54b4916e3a443.tar.bz2
rails-2650742bd02e108bc4ccdc59efa54b4916e3a443.zip
Add support for namespaced validators
Includes test and documentation for new feature Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
Diffstat (limited to 'activemodel/lib')
-rw-r--r--activemodel/lib/active_model/validations/validates.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/validations/validates.rb b/activemodel/lib/active_model/validations/validates.rb
index 77c5073c6e..0132f68282 100644
--- a/activemodel/lib/active_model/validations/validates.rb
+++ b/activemodel/lib/active_model/validations/validates.rb
@@ -55,6 +55,10 @@ module ActiveModel
# validates :name, :title => true
# end
#
+ # Additionally validator classes may be in another namespace and still used within any class.
+ #
+ # validates :name, :'file/title' => true
+ #
# The validators hash can also handle regular expressions, ranges,
# arrays and strings in shortcut form, e.g.
#
@@ -86,8 +90,10 @@ module ActiveModel
defaults.merge!(:attributes => attributes)
validations.each do |key, options|
+ key = "#{key.to_s.camelize}Validator"
+
begin
- validator = const_get("#{key.to_s.camelize}Validator")
+ validator = key.include?('::') ? key.constantize : const_get(key)
rescue NameError
raise ArgumentError, "Unknown validator: '#{key}'"
end