【发布时间】:2012-03-16 02:09:40
【问题描述】:
这应该很容易。我想我一定对命名很感兴趣。
“经理”和“下属”(员工)都属于“人员”类。
这是我所拥有的:
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
这对于检查和分配经理非常有用。
我对下属很感兴趣。它返回 Person 的自己,而不是他们的下属:
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
看到 WHERE 子句中匹配“person_id”的位置了吗?我需要它是“manager_id”,但弄乱 PersonManagerAssignment 关联 foreign_key 和 primary_key 值似乎没有帮助。
有什么想法吗?
【问题讨论】:
-
您的 PersonManagerAssignment 模型是什么样的?
-
我已经进一步澄清了这个问题。我基本上需要控制在那个 WHERE 子句中使用哪个 ID。
标签: ruby-on-rails activerecord model