我试图找出一种方法来定义一个belongs_to
关联,其中可以通过4个不同列之一找到目标记录。设置:Rails belongs_to与多个外键的关联
用户
class User < ActiveRecord::Base
has_many :managerships, foreign_key: :employee_id
has_many :managers, through: :managerships
end
管理者来说
class Managership < ActiveRecord::Base
belongs_to :employee, class_name: 'User'
belongs_to :manager # <-- ideas?
end
的managerships
表有4列manager_id
,manager_custom_id
,manager_email
,manager_saml_id
,我们可以用它来查找用户的管理者。对于每个Managership
,这些列中只有一列出现。
我正在寻找一种方法能够调用user.managers
(经理是User
),以便它返回的所有用户,其中managerships.manager_id = users.id OR managerships.manager_custom_id = users.custom_id OR managerships.manager_email = users.email OR managerships.manager_saml_id = users.saml_id
非常感谢您的任何想法!
谢谢你,尼基塔。虽然这可能是要走的路,但它不会回报经理。 'self.class.joins(:managerships)'将返回所有拥有管理员的用户(请参阅'has_many:managerships,foreign_key :: employee_id'),而不是管理员本身 –
@JanKlimo是的。让我对sql进行思考,这不会是一件容易的事情:/ –