提交 db5415dd 编写于 作者: R Rafael Mendonça França

Merge pull request #15565 from sgrif/sg-no-unfreezing

Move conditionals about freezing closer to the definition of `freeze`
......@@ -546,5 +546,11 @@ def initialize_internals_callback
def init_attributes(attributes, options)
assign_attributes(attributes)
end
def thaw
if frozen?
@raw_attributes = @raw_attributes.dup
end
end
end
end
......@@ -347,7 +347,7 @@ def remember_transaction_record_state #:nodoc:
@_start_transaction_state[:destroyed] = @destroyed
end
@_start_transaction_state[:level] = (@_start_transaction_state[:level] || 0) + 1
@_start_transaction_state[:frozen?] = @raw_attributes.frozen?
@_start_transaction_state[:frozen?] = frozen?
end
# Clear the new record state and id of a record.
......@@ -367,8 +367,7 @@ def restore_transaction_record_state(force = false) #:nodoc:
transaction_level = (@_start_transaction_state[:level] || 0) - 1
if transaction_level < 1 || force
restore_state = @_start_transaction_state
was_frozen = restore_state[:frozen?]
@raw_attributes = @raw_attributes.dup if @raw_attributes.frozen?
thaw unless restore_state[:frozen?]
@new_record = restore_state[:new_record]
@destroyed = restore_state[:destroyed]
if restore_state.has_key?(:id)
......@@ -377,7 +376,6 @@ def restore_transaction_record_state(force = false) #:nodoc:
@raw_attributes.delete(self.class.primary_key)
@attributes.delete(self.class.primary_key)
end
@raw_attributes.freeze if was_frozen
end
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册