ruby-on-rails – 没有外键的ActiveRecord关联
发布时间:2020-12-17 01:48:44 所属栏目:百科 来源:网络整理
导读:我正在尝试在用户之间建立关系模型.用户可以发起关系,也可以从其他用户接收关系.因此,db中的关系表具有外键“initiator_id”和“recipient_id”. 现在,我可以使用以下关联来计算用户发起或接收的关系: has_many :initiated_relations,:foreign_key = :initi
我正在尝试在用户之间建立关系模型.用户可以发起关系,也可以从其他用户接收关系.因此,db中的关系表具有外键“initiator_id”和“recipient_id”.
现在,我可以使用以下关联来计算用户发起或接收的关系: has_many :initiated_relations,:foreign_key => :initiator_id,:class_name => 'Relation',:dependent => :destroy has_many :received_relations,:foreign_key => :recipient_id,:dependent => :destroy 我想要做的是建立一个关联,它将获取属于用户(发起或接收)的所有关系.尝试以下操作无效,并抱怨缺少“user_id”字段: has_many :relations,:conditions => 'recipient_id = #{id} or initiator_id = #{id}' 如何创建仅基于条件字段的关联,而不查找默认的foreign_key?或者可能有一种完全不同的方法来解决这个问题? 解决方法
好吧,我可以考虑使用finder_sql:
has_many :relations,:finder_sql => 'select * from relations right outer join users on relations.recipient_id = #{id} or relations.initiator_id = #{id}' 除此之外,你可以编写一个返回两个关系关联的联合数组的方法,但是你将失去关联接口(phew)的优势. 也许有人会提出更好的解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |