You didn't say if it exists, but I'm guessing that there's an 'encounter group' table associated to that number (99999). In which case, what you're looking at is a has_many :through relation.
(code example simplified - fix up with modules, etc as your app needs) class Patient < ActiveRecord::Base # has field pat_encounter_group belongs_to :encounter_group, :foreign_key => 'pat_encounter_group' has_many :requests, :through => :encounter_group end class EncounterGroup < ActiveRecord::Base has_many :patients, :foreign_key => 'pat_encounter_group' has_many :requests, :foreign_key => 'req_encounter_group' end class Request < ActiveRecord::Base belongs_to :encounter_group, :foreign_key => 'req_encounter_group' has_many :patients, :through => :encounter_group end [Note: I haven't tried this code, but it should work according to the documentation] On the other hand, the code you've got below should, in principle, also work. How exactly did it "fail"? --Matt Jones On Mar 17, 6:07 am, Valentino Lun <[email protected]> wrote: > Dear all > > I have the following 2 models, with 2 difference data sources. I would > like to create a has_many relation to SX1::Request > > pat = SX9::Patient.find("123456789") > > >> pat.pat_encounter_group > > => 99999 > > By default, rails will use the PK(Primary Key) of SX9::Patient then pass > to SX1::Request. e.g. > > SELECT * FROM request WHERE (request.req_encounter_group = "123456789") > > What I am expected is to override the primary_key in SX9::Patient > has_many relation with :primary_key => "pat_encounter_group". i.e. > > SELECT * FROM request WHERE (request.req_encounter_group = 99999) > > But I failed to do... > > Luckily, I can achieve this by defining a instance method. e.g. > def find_request_by_pat_encounter_group > SX1::Request.find_all_by_req_encounter_group(self.pat_encounter_group) > end > > My question, is it possible to do this in has_many relationship? Thank > you. > > module SX9 > class Patient < RemoteSX9Model > set_table_name "patient" > set_primary_key "pat_encounter" > > # I tried this but failed > has_many :requests, :class_name => "SX1::Request", :primary_key => > "pat_encounter_group", :foreign_key => "req_encounter_group" > end > end > > module SX1 > class Request < RemoteSX1Model > set_table_name "request" > set_primary_key "req_reqno" > end > end > > Thank you very much > Valentino > -- > Posted viahttp://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

