我正在构建一个具有users
的应用程序,这些应用程序通过partnerships
表相互连接。合作伙伴关系表包含user_id
和partner_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_id
或partner_id
列中的所有合作关系。
答案 0 :(得分:0)
你可以使用conditional association:
has_many :partnerships, ->(user) { where("user_id = ? OR partner_id = ?", user.id, user.id) }