Может ли модель "принадлежать" или/или более одной модели?

Извините, если это вопрос немного нуб, но я хочу прояснить свои мысли по этому поводу. У меня есть модель, которая может принадлежать одной модели или другой. Например:

Скажем, у меня есть модель Team, и у меня есть модель 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, не имея в виду, что это может быть одна из двух моделей? Например, если я позвонил @bank_account.member на банковский счет Team, будет ли он дрожать?

Спасибо за вашу помощь.

Ответ 1

Вы можете использовать полиморфные отношения.

Ваш банковский счет будет иметь полиморфное отношение.

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.