diff options
| author | Santiago Pastorino <santiago@wyeworks.com> | 2010-12-28 00:45:35 -0200 | 
|---|---|---|
| committer | Santiago Pastorino <santiago@wyeworks.com> | 2010-12-28 10:11:27 -0200 | 
| commit | 304d38c0536dc32a8a1595ba34370ebf69a0d50d (patch) | |
| tree | d45a7b846e4fb22bb39f1d4fba6edd1c7ecb54cb | |
| parent | 897b56bb2f8c2a904f546db1a32bad074463ec9b (diff) | |
| download | rails-304d38c0536dc32a8a1595ba34370ebf69a0d50d.tar.gz rails-304d38c0536dc32a8a1595ba34370ebf69a0d50d.tar.bz2 rails-304d38c0536dc32a8a1595ba34370ebf69a0d50d.zip | |
Allow primary_key to be an attribute when the model is a new record
| -rw-r--r-- | activerecord/lib/active_record/persistence.rb | 2 | ||||
| -rw-r--r-- | activerecord/lib/active_record/transactions.rb | 4 | ||||
| -rw-r--r-- | activerecord/test/cases/attribute_methods_test.rb | 2 | 
3 files changed, 4 insertions, 4 deletions
| diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb index 9ac8fcb176..1fc9472231 100644 --- a/activerecord/lib/active_record/persistence.rb +++ b/activerecord/lib/active_record/persistence.rb @@ -282,7 +282,7 @@ module ActiveRecord      # that instances loaded from the database would.      def attributes_from_column_definition        Hash[self.class.columns.map do |column| -        [column.name, column.default] unless column.name == self.class.primary_key +        [column.name, column.default]        end]      end    end diff --git a/activerecord/lib/active_record/transactions.rb b/activerecord/lib/active_record/transactions.rb index 443f318067..868f761a33 100644 --- a/activerecord/lib/active_record/transactions.rb +++ b/activerecord/lib/active_record/transactions.rb @@ -301,8 +301,8 @@ module ActiveRecord      # Save the new record state and id of a record so it can be restored later if a transaction fails.      def remember_transaction_record_state #:nodoc        @_start_transaction_state ||= {} +      @_start_transaction_state[:id] = id if has_attribute?(self.class.primary_key)        unless @_start_transaction_state.include?(:new_record) -        @_start_transaction_state[:id] = id if has_attribute?(self.class.primary_key)          @_start_transaction_state[:new_record] = @new_record        end        unless @_start_transaction_state.include?(:destroyed) @@ -329,7 +329,7 @@ module ActiveRecord              @attributes = @attributes.dup if @attributes.frozen?              @new_record = restore_state[:new_record]              @destroyed  = restore_state[:destroyed] -            if restore_state[:id] +            if restore_state.has_key?(:id)                self.id = restore_state[:id]              else                @attributes.delete(self.class.primary_key) diff --git a/activerecord/test/cases/attribute_methods_test.rb b/activerecord/test/cases/attribute_methods_test.rb index 8214815bde..e3cbae4a84 100644 --- a/activerecord/test/cases/attribute_methods_test.rb +++ b/activerecord/test/cases/attribute_methods_test.rb @@ -105,7 +105,7 @@ class AttributeMethodsTest < ActiveRecord::TestCase    def test_read_attributes_before_type_cast      category = Category.new({:name=>"Test categoty", :type => nil}) -    category_attrs = {"name"=>"Test categoty", "type" => nil, "categorizations_count" => nil} +    category_attrs = {"name"=>"Test categoty", "id" => nil, "type" => nil, "categorizations_count" => nil}      assert_equal category_attrs , category.attributes_before_type_cast    end | 
