Может ли модель "принадлежать_то" либо / или более чем к одной модели? - PullRequest
11 голосов
/ 09 ноября 2009

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

Допустим, у меня есть модель Team и модель Member, и обе эти модели могут иметь один банковский счет.

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

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

1 Ответ

9 голосов
/ 09 ноября 2009

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

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

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.

...