Not sure what I'm doing wrong. Sorry for the length. Setup: ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-darwin8.9.1] / Rails 1.2.2
One estimate has many parts.
class Estimate < OldBase # These are legacy tables that cannot be changed. set_table_name 'ESTIMATE' set_primary_key 'EST_NUMBER'
has_many :parts, :class_name => "OldPart", :foreign_key => "EST_NUMBER" # Estimate has a field with the name of 'ID' used as a human readable identification -- not as a unique id in the sense of rails. end class OldPart < OldBase set_table_name "EST_PART' set_primary_key 'IDNUMBER' # used as rails would use the field 'id'
belongs_to :estimate, :foreign_key => "EST_NUMBER" # in OldPart is a field EST_NUMBER which contains the number of the parent estimate. end
Trying it out >> reload! >> estimate = Estimate.find_by_EST_NUMBER(11355) >> pp.estimate.EST_NUMBER "11355" >> pp estimate.ID "230-0019-00 " >> pp e.parts
Looking in the development log SELECT * FROM ESTIMATE WHERE (ESTIMATE. EST_NUMBER = 11355) SELECT * FROM EST_PART WHERE (EST_PART . EST_NUMBER = '230-0019-00')
I expected SELECT * FROM ESTIMATE WHERE (ESTIMATE. EST_NUMBER = 11355) SELECT * FROM EST_PART WHERE (EST_PART.EST_NUMBER = '11355')
Changing class OldPart < OldBase ... belongs_to :estimate, :foreign_key => "EST_NUMBER" to belongs_to :estimate or to belongs_to :estimate, :class_name => "Estimate", :foreign_key => "EST_NUMBER" or just removing the belongs_to line
has no effect.
Has_many associations for other tables work fine.
What am I missing? Suggestions?
Thanks Pat