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
<rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---