Может ли модель "принадлежать" или/или более одной модели?
Извините, если это вопрос немного нуб, но я хочу прояснить свои мысли по этому поводу. У меня есть модель, которая может принадлежать одной модели или другой. Например:
Скажем, у меня есть модель 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
.