Sql Rails 4具有多个直通状态,两次连接同一个表

Sql Rails 4具有多个直通状态,两次连接同一个表,sql,ruby-on-rails,ruby-on-rails-4,associations,has-many,Sql,Ruby On Rails,Ruby On Rails 4,Associations,Has Many,我有3个模型,用户,部门和员工。Staff分别属于User和Division,并存储一个名为role的值。目前有2个角色,分别为1和2。下面是我的关系 用户: class User < ActiveRecord::Base has_many :staffs, :dependent => :destroy # manager view has_many :manage_divisions, -> { where staffs: { role: 1 } }, :th

我有3个模型,用户,部门和员工。Staff分别属于User和Division,并存储一个名为role的值。目前有2个角色,分别为1和2。下面是我的关系

用户:

class User < ActiveRecord::Base

  has_many :staffs, :dependent => :destroy

  # manager view
  has_many :manage_divisions, -> { where staffs: { role: 1 } }, :through => :staffs, :source => :division
  has_many :manage_division_staffs, :through => :manage_divisions, :source => :staffs

  # staff view
  has_many :work_for_divisions, -> { where staffs: { role: 2 } }, :through => :staffs, :source => :division
  has_many :work_for_division_staffs, :through => :work_for_divisions, :source => :staffs
end

我知道我做错了什么,但我不知道如何纠正它。有什么想法吗?

我不知道你在问什么,看起来你已经为工作设置了它。你可以指定工作人员:{role:1},那么为什么你会对角色为1的工作人员的回报感到惊讶呢?我想通过user.manage\u divisions获得用户通过staff表管理的部门。然后通过User.manage\u division\u staff获取这些部门的员工列表。我怎样才能做到这一点?
SELECT "staffs".* 
FROM "staffs" 
INNER JOIN "divisions" ON "staffs"."division_id" = "divisions"."id" 
INNER JOIN "staffs" "staffs_manage_division_staffs_join" ON "divisions"."id" = "staffs_manage_division_staffs_join"."division_id" 
WHERE "staffs"."role" = 1 
AND "staffs_manage_division_staffs_join"."user_id" = ?  [["user_id", 3]]