Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 2718

Show
Ignore:
Timestamp:
10/24/05 16:45:22 (3 years ago)
Author:
bitsweat
Message:

r2726@asus: jeremy | 2005-10-24 14:11:59 -0700
correct primary key semantics: foo.id and foo.real_pk_column should both exist and return nil if foo.new_record?

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activerecord/lib/active_record/base.rb

    r2705 r2718  
    14521452        access_code = cast_code ? "(v=@attributes['#{attr_name}']) && #{cast_code}" : "@attributes['#{attr_name}']" 
    14531453 
    1454         unless symbol == :id 
     1454        unless attr_name.to_s == self.class.primary_key.to_s 
    14551455          access_code = access_code.insert(0, "raise NoMethodError, 'missing attribute: #{attr_name}', caller unless @attributes.has_key?('#{attr_name}'); ") 
    14561456        end 
  • trunk/activerecord/test/pk_test.rb

    r2639 r2718  
    1 require 'abstract_unit' 
     1require "#{File.dirname(__FILE__)}/abstract_unit" 
    22require 'fixtures/topic' 
    33require 'fixtures/subscriber' 
     
    1717    topic.title = "New Topic" 
    1818    assert_equal(nil, topic.id) 
    19     assert_nothing_raised{ topic.save
     19    assert_nothing_raised { topic.save!
    2020    id = topic.id 
    2121 
     
    2626  def test_customized_primary_key_auto_assigns_on_save 
    2727    keyboard = Keyboard.new(:name => 'HHKB') 
    28     assert_nothing_raised { keyboard.save } 
    29     assert keyboard.id 
     28    assert_nothing_raised { keyboard.save! } 
    3029    assert_equal keyboard.id, Keyboard.find_by_name('HHKB').id 
    3130  end 
     
    3332  def test_customized_primary_key_can_be_get_before_saving 
    3433    keyboard = Keyboard.new 
    35     assert_respond_to(keyboard, :key_number) 
    36     assert_nothing_raised { keyboard.key_number } 
     34    assert_nil keyboard.id 
     35    assert_nothing_raised { assert_nil keyboard.key_number } 
    3736  end 
    3837