抱歉,这是一个有点菜鸟的问题,但希望澄清我对此的想法。我有一个模型可以属于一个模型,也可以属于另一个模型。例如:
假设我有一个团队模型和一个成员(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
,根据对象的不同,它会为您提供Member
或Team
对象。在
Member
或Team
模型中,您可以使用@member.bank_accounts
获得相应的银行帐户。