Sql Rails 4具有多个直通状态,两次连接同一个表
我有3个模型,用户,部门和员工。Staff分别属于User和Division,并存储一个名为role的值。目前有2个角色,分别为1和2。下面是我的关系 用户: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
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]]