模型"belongs_to"可以是/或多个模型吗?

aar*_*ell 11 model ruby-on-rails associations

抱歉,如果这是一个轻微的菜鸟问题,但希望澄清我对此的看法.我有一个可以属于一个模型或另一个模型的模型.例如:

假设我有一个团队模型,我有一个成员模型,这两个模型都可以有一个BankAccount.

class Team
  has_many :members
  has_one :bank_account
end

class Member
  belongs_to :team
  has_one :bank_account
end

class BankAccount
  belongs_to :team, :member
end
Run Code Online (Sandbox Code Playgroud)

对我而言,上述内容是有道理的,但我想与一些更有经验的Rails人员澄清这一点?Rails有没有办法计算任何给定BankAccount的父模型是什么,请记住它可能是两个模型之一?例如,如果我在团队银行帐户上调用@ bank_account.member,它会不稳定地抛出?

谢谢你的帮助.

Dam*_*IEU 9

您可以使用多态关系.

您的银行帐户将具有多态关系.

class BankAccount
    belongs_to :people, :polymorphic => true
end
Run Code Online (Sandbox Code Playgroud)

而你的两个(或更多)其他模型会有一个简单的has_many关系.

class Member
    has_many :bank_accounts, :as => :people
end
Run Code Online (Sandbox Code Playgroud)

然后@account.people ,在您的银行帐户中,您可以根据具体情况使用哪个帐户MemberTeam对象.

在您Member或您的Team模型中,您可以获得相应的银行帐户@member.bank_accounts.