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,这不是一件容易的事:/