抱歉,这是一个有点菜鸟的问题,但希望澄清我对此的想法。我有一个模型可以属于一个模型,也可以属于另一个模型。例如:

假设我有一个团队模型和一个成员(member)模型,并且这两个模型都可以有一个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

对我来说,以上是合理的做法,但我想和一些经验更丰富的Rails人员一起澄清一下? Rails是否有办法计算出任何给定BankAccount的父模型,并牢记它可能是两种模型之一?例如,如果我在Team银行帐户上致电@ bank_account.member,会不会产生摆动?

谢谢你的帮助。

最佳答案

您可以使用polymorphic relationship

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

class BankAccount
    belongs_to :people, :polymorphic => true
end

您的两个(或更多)其他模型将具有简单的has_many关系。
class Member
    has_many :bank_accounts, :as => :people
end

然后,您可以在银行帐户中使用@account.people,根据对象的不同,它会为您提供MemberTeam对象。

MemberTeam模型中,您可以使用@member.bank_accounts获得相应的银行帐户。

09-10 04:09
查看更多