Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fully marshal AR::Base objects. Fixes #2431.

  • Loading branch information...
commit c202c109657f8778e07edb6e2dd3f428a98c6cc3 1 parent dd944cb
@jonleighton jonleighton authored
View
21 activerecord/lib/active_record/base.rb
@@ -940,17 +940,6 @@ def before_remove_const #:nodoc:
self.current_scope = nil
end
- # Specifies how the record is loaded by +Marshal+.
- #
- # +_load+ sets an instance variable for each key in the hash it takes as input.
- # Override this method if you require more complex marshalling.
- def _load(data)
- record = allocate
- record.init_with(Marshal.load(data))
- record
- end
-
-
# Finder methods must instantiate through this method to work with the
# single-table inheritance model that makes it possible to create
# objects of different types from the same table.
@@ -1602,16 +1591,6 @@ def init_with(coder)
self
end
- # Specifies how the record is dumped by +Marshal+.
- #
- # +_dump+ emits a marshalled hash which has been passed to +encode_with+. Override this
- # method if you require more complex marshalling.
- def _dump(level)
- dump = {}
- encode_with(dump)
- Marshal.dump(dump)
- end
-
# Returns a String, which Action Pack uses for constructing an URL to this
# object. The default implementation returns this record's id as a String,
# or nil if this record's unsaved.
View
13 activerecord/test/cases/base_test.rb
@@ -1812,6 +1812,19 @@ def test_marshal_round_trip
assert_equal expected.attributes, actual.attributes
end
+ def test_marshal_new_record_round_trip
+ post = Marshal.load(Marshal.dump(Post.new))
+ assert post.new_record?, "should be a new record"
+ end
+
+ def test_marshalling_with_associations
+ post = Post.new
+ post.comments.build
+ post = Marshal.load(Marshal.dump(post))
+
+ assert_equal 1, post.comments.length
+ end
+
def test_attribute_names
assert_equal ["id", "type", "ruby_type", "firm_id", "firm_name", "name", "client_of", "rating", "account_id"],
Company.attribute_names
Please sign in to comment.
Something went wrong with that request. Please try again.