模型“belongs_to”可以是/或多个模型吗?
抱歉,如果这是一个轻微的菜鸟问题,但希望澄清我对此的看法。 我有一个可以属于一个模型或另一个模型的模型。 例如:
假设我有一个团队模型,我有一个成员模型,这两个模型都可以有一个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的父模型是什么,请记住它可能是两个模型之一? 例如,如果我在团队银行帐户上调用@ bank_account.member,它会不稳定地抛出?
谢谢你的帮助。
您可以使用多态关系 。
您的银行帐户将具有多态关系。
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
获取相应的银行帐户。