From 1d064d02f54906e8e94c4c3b5bf06ec4c178bdf5 Mon Sep 17 00:00:00 2001 From: Joe Van Dyk Date: Sat, 26 Sep 2009 16:52:59 -0700 Subject: [PATCH] You can now have columns named 'field' --- .../lib/active_record/attribute_methods/dirty.rb | 7 ++++--- activerecord/test/schema/schema.rb | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/activerecord/lib/active_record/attribute_methods/dirty.rb b/activerecord/lib/active_record/attribute_methods/dirty.rb index 4df0f1a..45469a0 100644 --- a/activerecord/lib/active_record/attribute_methods/dirty.rb +++ b/activerecord/lib/active_record/attribute_methods/dirty.rb @@ -49,10 +49,10 @@ module ActiveRecord # The attribute already has an unsaved change. if changed_attributes.include?(attr) old = changed_attributes[attr] - changed_attributes.delete(attr) unless field_changed?(attr, old, value) + changed_attributes.delete(attr) unless __field_changed?(attr, old, value) else old = clone_attribute_value(:read_attribute, attr) - changed_attributes[attr] = old if field_changed?(attr, old, value) + changed_attributes[attr] = old if __field_changed?(attr, old, value) end # Carry on. @@ -69,7 +69,8 @@ module ActiveRecord end end - def field_changed?(attr, old, value) + # Named this way because 'field' is a common column name. + def __field_changed?(attr, old, value) if column = column_for_attribute(attr) if column.number? && column.null && (old.nil? || old == 0) && value.blank? # For nullable numeric columns, NULL gets stored in database for blank (i.e. '') values. diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index 15e5e12..3d62143 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -33,6 +33,7 @@ ActiveRecord::Schema.define do create_table :authors, :force => true do |t| t.string :name, :null => false + t.string :field t.integer :author_address_id t.integer :author_address_extra_id end -- 1.6.3.2