lib/active_model/dirty.rb in activemodel-8.0.0.beta1 vs lib/active_model/dirty.rb in activemodel-8.0.0.rc1
- old
+ new
@@ -245,15 +245,21 @@
attribute_method_affix prefix: "clear_", suffix: "_change", parameters: false
end
def initialize_dup(other) # :nodoc:
super
- if self.class.respond_to?(:_default_attributes)
- @attributes = self.class._default_attributes.map do |attr|
- attr.with_value_from_user(@attributes.fetch_value(attr.name))
+ @mutations_from_database = nil
+ end
+
+ def init_attributes(other) # :nodoc:
+ attrs = super
+ if other.persisted? && self.class.respond_to?(:_default_attributes)
+ self.class._default_attributes.map do |attr|
+ attr.with_value_from_user(attrs.fetch_value(attr.name))
end
+ else
+ attrs
end
- @mutations_from_database = nil
end
def as_json(options = {}) # :nodoc:
except = [*options[:except], "mutations_from_database", "mutations_before_last_save"]
options = options.merge except: except