has_many:通过多个来源

时间:2017-03-30 16:33:52

标签: ruby-on-rails ruby activerecord

我有一个名为AnswerConnection的模型,它有两个来自Answer模型的外键:answer_1answer_2

在我定义的Answer模型中:

has_many :connections, through: :answer_connections, source: :answer_2

但是,关系是simmetrycal:如果answer_1连接到answer_2,则answer_2连接到answer_1。这意味着当我搜索特定答案的连接时,我需要检查它是否存在于answer_1或answer_2字段中。

可以定义参与此关系(如果我可以在:source参数中定义两个值)?

1 个答案:

答案 0 :(得分:1)

我认为你不能设置2个来源,但如果我理解正确,你可以这样做:

has_many :connections_1, through: :answer_connections, source: :answer_1
has_many :connections_2, through: :answer_connections, source: :answer_2

def connections
  connections_1.merge(connections_2) # intersection
  # or connections_1.or(connections_2) for union
end