これは簡単です。私は命名に追いつく必要があると思う。ActionRecordモデリング:多くのマネージャーを持つ従業員
「マネージャ」と「下位」(従業員)の両方が「Person」クラスです。
は、ここで私が持っているものだ:
チェックや管理者を割り当てるための素晴らしい作品class Person < ActiveRecord::Base
has_many :person_manager_assignments
has_many :managers, :through => :person_manager_assignments
has_many :subordinates, :through => :person_manager_assignments
end
class PersonManagerAssignment < ActiveRecord::Base
has_one :subordinate, :class_name => "Person", :foreign_key => "id", :primary_key => 'person_id'
has_one :manager, :class_name => "Person", :foreign_key => "id", :primary_key => 'manager_id'
end
。
私は部下についての部分につかまえています。これは、代わりに自分の部下で、人の自己を返します。
p.subordinates
Person Load (0.5ms) SELECT "people".* FROM "people" INNER JOIN "person_manager_assignments" ON "people"."id" = "person_manager_assignments"."person_id" WHERE "person_manager_assignments"."person_id" = 15973
はどこそれが「PERSON_ID」一致のWHERE句でビットを参照してください?私はそれが "manager_id"であることが必要ですが、PersonManagerAssignment associations foreign_keyとprimary_key値を混乱させることは役に立たないようです。
アイデア?
PersonManagerAssignmentモデルはどのように見えますか? – bblack
それを追加しました。 – Christopher
私はこの質問をさらに明確にしました。私は基本的にそのWHERE句でどのIDが使用されているかを制御する必要があります。 – Christopher