mirror of https://github.com/rails/rails
Convert :primary_key in association to a string before comparing to column names, so that for example :primary_key => :another_pk works as well [#5605 state:resolved]
This commit is contained in:
parent
67a3a70295
commit
cc9742920c
|
@ -320,7 +320,7 @@ module ActiveRecord
|
|||
klass = klass_name.constantize
|
||||
|
||||
table_name = klass.quoted_table_name
|
||||
primary_key = reflection.options[:primary_key] || klass.primary_key
|
||||
primary_key = (reflection.options[:primary_key] || klass.primary_key).to_s
|
||||
column_type = klass.columns.detect{|c| c.name == primary_key}.type
|
||||
|
||||
ids = _id_map.keys.map do |id|
|
||||
|
|
|
@ -81,6 +81,13 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|||
assert_not_nil citibank_result.instance_variable_get("@firm_with_primary_key")
|
||||
end
|
||||
|
||||
def test_eager_loading_with_primary_key_as_symbol
|
||||
Firm.create("name" => "Apple")
|
||||
Client.create("name" => "Citibank", :firm_name => "Apple")
|
||||
citibank_result = Client.find(:first, :conditions => {:name => "Citibank"}, :include => :firm_with_primary_key_symbols)
|
||||
assert_not_nil citibank_result.instance_variable_get("@firm_with_primary_key_symbols")
|
||||
end
|
||||
|
||||
def test_no_unexpected_aliasing
|
||||
first_firm = companies(:first_firm)
|
||||
another_firm = companies(:another_firm)
|
||||
|
|
|
@ -107,6 +107,7 @@ class Client < Company
|
|||
belongs_to :firm_with_other_name, :class_name => "Firm", :foreign_key => "client_of"
|
||||
belongs_to :firm_with_condition, :class_name => "Firm", :foreign_key => "client_of", :conditions => ["1 = ?", 1]
|
||||
belongs_to :firm_with_primary_key, :class_name => "Firm", :primary_key => "name", :foreign_key => "firm_name"
|
||||
belongs_to :firm_with_primary_key_symbols, :class_name => "Firm", :primary_key => :name, :foreign_key => :firm_name
|
||||
belongs_to :readonly_firm, :class_name => "Firm", :foreign_key => "firm_id", :readonly => true
|
||||
|
||||
# Record destruction so we can test whether firm.clients.clear has
|
||||
|
|
Loading…
Reference in New Issue