diff --git a/activerecord/lib/active_record/attribute.rb b/activerecord/lib/active_record/attribute.rb index 3c4c8f10ec4219ad3e50eed6f95164faa494ccdc..24231dc9e1f433137c16e7f18f94fd7c9feec61b 100644 --- a/activerecord/lib/active_record/attribute.rb +++ b/activerecord/lib/active_record/attribute.rb @@ -170,7 +170,7 @@ def initialize(name) super(name, nil, Type::Value.new) end - def value + def type_cast(*) nil end diff --git a/activerecord/test/cases/attributes_test.rb b/activerecord/test/cases/attributes_test.rb index 2bebbfa205df38ffcf5880ec4247f08b9d784677..48ba7a63d5fd54df68bebb3a75622f372416f9f3 100644 --- a/activerecord/test/cases/attributes_test.rb +++ b/activerecord/test/cases/attributes_test.rb @@ -63,6 +63,15 @@ class CustomPropertiesTest < ActiveRecord::TestCase end end + test "model with nonexistent attribute with default value can be saved" do + klass = Class.new(OverloadedType) do + attribute :non_existent_string_with_default, :string, default: 'nonexistent' + end + + model = klass.new + assert model.save + end + test "changing defaults" do data = OverloadedType.new unoverloaded_data = UnoverloadedType.new