【问题标题】:Can I do a `has_many through` on foreign key in the through relation?我可以在直通关系中对外键执行“has_many through”吗?
【发布时间】:2015-12-04 09:42:52
【问题描述】:

我有三个模型 - User, Membership, Connection,它们看起来像这样:

class User < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
end

class Membership < ActiveRecord::Base
  belongs_to :inviter, class_name: "User", foreign_key: "user_id"
  belongs_to :invited, class_name: "User", foreign_key: "invited_id"
  has_many :connections, dependent: :destroy
end

class Connection < ActiveRecord::Base
  belongs_to :inviter_membership, class_name: "Membership", foreign_key: "membership_id"
  belongs_to :invited_membership, class_name: "Membership", foreign_key: "invited_membership_id"
end

但是...我想做的是建立从userconnections 的直接连接。所以,理想情况下,我希望能够做到user.invited_connectionsuser.inviter_connections,它们将对应正确的连接。

user.invited_connections 将对应于 membership.user_id == current_user.id 所在的连接(但请记住,与 user_id 相关联的成员记录相关联的连接......不仅仅是与 user_id 相关联的成员资格。

这可能吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 associations


    【解决方案1】:

    您可以尝试以下方法:

    has_many :invited_connections, through: :memberships, source: :invited_membership
    has_many :inviter_connections, through: :memberships, source: :inviter_membership
    

    干杯!

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      • 2015-07-03
      相关资源
      最近更新 更多