mirror of
https://github.com/github/rails.git
synced 2026-01-09 14:48:01 -05:00
make ActiveModel::Name fail gracefully with anonymous classes
This commit is contained in:
@@ -12,6 +12,9 @@ module ActiveModel
|
||||
|
||||
def initialize(klass, namespace = nil, name = nil)
|
||||
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)
|
||||
|
||||
@unnamespaced = self.sub(/^#{namespace.name}::/, '') if namespace
|
||||
|
||||
@@ -247,3 +247,16 @@ class NamingHelpersTest < Test::Unit::TestCase
|
||||
ActiveModel::Naming.send(method, *args)
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user