复杂的Rails与友谊关系有很多关系

时间:2014-04-19 06:29:16

标签: ruby-on-rails ruby

我正在构建一个具有users的应用程序,这些应用程序通过partnerships表相互连接。合作伙伴关系表包含user_idpartner_id列。

user.rb

class User < ActiveRecord::Base
  has_many :partnerships
  has_many :partners, through: :partnerships
end

partnership.rb

class Partnership < ActiveRecord::Base
  belongs_to :user
  belongs_to :partner, class_name: "User"
end

我希望获得的是为用户提供所有合作伙伴关系,无论他们是user_id模型的partner_id还是Partnership部分。

例如,如果用户A添加用户B,则用户A是用户,用户B是合作伙伴。我希望能够在任一模型上调用@user.partnerships并获得相同的合作伙伴关系。

如何在User模型上实施has_many关联,该关联将检索用户ID在user_idpartner_id列中的所有合作关系。

1 个答案:

答案 0 :(得分:0)

可以使用conditional association

has_many :partnerships, ->(user) { where("user_id = ? OR partner_id = ?", user.id, user.id) }