1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

make ActiveModel::Name fail gracefully with anonymous classes

This commit is contained in:
Jakub Kuźma 2011-11-24 15:50:21 +01:00
parent a478389b7d
commit dc39af0a9a
2 changed files with 16 additions and 0 deletions

View file

@ -12,6 +12,9 @@ module ActiveModel
def initialize(klass, namespace = nil, name = nil) def initialize(klass, namespace = nil, name = nil)
name ||= klass.name name ||= klass.name
raise ArgumentError, "Class name cannot be blank. You need to supply a name argument when anonymous class given" if name.blank?
super(name) super(name)
@unnamespaced = self.sub(/^#{namespace.name}::/, '') if namespace @unnamespaced = self.sub(/^#{namespace.name}::/, '') if namespace

View file

@ -247,3 +247,16 @@ class NamingHelpersTest < Test::Unit::TestCase
ActiveModel::Naming.send(method, *args) ActiveModel::Naming.send(method, *args)
end end
end end
class NameWithAnonymousClassTest < Test::Unit::TestCase
def test_anonymous_class_without_name_argument
assert_raises(ArgumentError) do
model_name = ActiveModel::Name.new(Class.new)
end
end
def test_anonymous_class_with_name_argument
model_name = ActiveModel::Name.new(Class.new, nil, "Anonymous")
assert_equal "Anonymous", model_name
end
end