Ruby on rails Rails属于与多个外键的关联

Ruby on rails Rails属于与多个外键的关联,ruby-on-rails,Ruby On Rails,我试图找到一种方法来定义一个属于关联,其中目标记录可以通过4个不同列中的一个找到。设置: 用户 class User < ActiveRecord::Base has_many :managerships, foreign_key: :employee_id has_many :managers, through: :managerships end class用户

我试图找到一种方法来定义一个
属于
关联,其中目标记录可以通过4个不同列中的一个找到。设置:

用户

class User < ActiveRecord::Base
  has_many :managerships, foreign_key: :employee_id
  has_many :managers, through: :managerships
end
class用户
经理职位

class Managership < ActiveRecord::Base
  belongs_to :employee, class_name: 'User'
  belongs_to :manager # <-- ideas?
end
classmanagership属于:manager#尽管我怀疑为一个关系使用4个外键是否是一个好主意,但从用户那里获得管理者的一种方法是使用方法而不是范围。但是,如果您这样做,您将无法使用
#joins

class User
  def managers
   self.class.joins(:managerships).where('managerships.manager_id = ? OR managerships.manager_custom_id = ? OR managerships.manager_email = ? OR managerships.manager_saml_id', id, custom_id, emd, saml_id)
  end
end

Managership
中,您可以做类似的事情,声明
#manager
而不是
属于:manager

谢谢你,尼基塔。虽然这可能是一条路,但它不会让经理们回归
self.class.joins(:managerships)
将返回拥有经理的所有用户(请参见
拥有许多:经理职位、外键::员工id
),而不是经理themselves@JanKlimo对。让我考虑一下sql,这不是一件容易的事:/