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:
parent
a478389b7d
commit
dc39af0a9a
2 changed files with 16 additions and 0 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue