diff options
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 5 | ||||
-rwxr-xr-x | activerecord/test/base_test.rb | 10 |
3 files changed, 15 insertions, 2 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index beb419b62c..b6a21d75de 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Modify read_attribute to allow a symbol argument #2024 [Ken Kunz] + * Make destroy return self #1913 [sebastian.kanthak@muehlheim.de] * Fix typo in validations documentation #1938 [court3nay] diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index e31987473e..6180f45fed 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -1108,13 +1108,13 @@ module ActiveRecord #:nodoc: # "2004-12-12" in a data column is cast to a date object, like Date.new(2004, 12, 12)). # (Alias for the protected read_attribute method). def [](attr_name) - read_attribute(attr_name.to_s) + read_attribute(attr_name) end # Updates the attribute identified by <tt>attr_name</tt> with the specified +value+. # (Alias for the protected write_attribute method). def []=(attr_name, value) - write_attribute(attr_name.to_s, value) + write_attribute(attr_name, value) end # Allows you to set all the attributes at once by passing in a hash with keys @@ -1267,6 +1267,7 @@ module ActiveRecord #:nodoc: # Returns the value of attribute identified by <tt>attr_name</tt> after it has been type cast (for example, # "2004-12-12" in a data column is cast to a date object, like Date.new(2004, 12, 12)). def read_attribute(attr_name) + attr_name = attr_name.to_s if !(value = @attributes[attr_name]).nil? if column = column_for_attribute(attr_name) if unserializable_attribute?(attr_name, column) diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb index 249c4116a6..b12d0c941d 100755 --- a/activerecord/test/base_test.rb +++ b/activerecord/test/base_test.rb @@ -180,6 +180,16 @@ class BasicsTest < Test::Unit::TestCase assert_equal "Still another topic: part 2", topic.title end + def test_read_attribute + topic = Topic.new + topic.title = "Don't change the topic" + assert_equal "Don't change the topic", topic.send(:read_attribute, "title") + assert_equal "Don't change the topic", topic["title"] + + assert_equal "Don't change the topic", topic.send(:read_attribute, :title) + assert_equal "Don't change the topic", topic[:title] + end + def test_read_attribute_when_false topic = topics(:first) topic.approved = false |