W przypadku aplikacji CRM chcę mieć możliwość powiązania modelu Person bezpośrednio z modelem konta lub z modelem firmy, który z kolei jest powiązany z modelem konta. Ponadto chcę powiązać model adresu z firmą lub osobą. To, co mam na myśli:Model szyn należy do jednego lub drugiego modelu
class Account
has_many :Persons
has_many :Companies
end
class Person
belongs_to :Account
belongs_to :Company
has_one :Address
end
class Company
belongs_to :Account
has_many :Persons
has_one :Address
end
class Address
belongs_to :Person
belongs_to :Company
end
Więc Konto będzie albo „konto osoba” lub „konto firmowe” w zależności od stowarzyszenia być. Będą się wzajemnie wykluczać. Planuję mieć klucze obce account_id i company_id w tabeli Person. Z tego samego powodu miałbym klucze obce person_id i company_id w tabeli Address. Jeden klucz obcy w każdym przypadku byłby zerowy.
Czy to jest w porządku w Railsach? Jeśli nie, wszelkie zalecenia będą mile widziane.
można używać walidacji modelu, aby upewnić się, że tylko jeden rodzaj związku istnieje. Nie jestem pewien, na czym polega większa odpowiedź ... – jaydel