Rails model принадлежит к той или иной модели

Для приложения CRM я хочу иметь возможность ассоциировать модель лица непосредственно с моделью учетной записи или с моделью компании, которая, в свою очередь, связана с моделью учетной записи. Также я хочу связать модель адреса с моделью компании или с моделью лица. Вот что я имею в виду:

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

Таким образом, учетная запись будет либо "учетной записью лица", либо "учетной записью предприятия", в зависимости от ассоциации. Они будут взаимоисключающими. Я планирую, что в таблице "Личные кабинеты" у меня будет информация об иностранных ключах account_id и company_id. Точно так же в таблице адресов у меня будут именные ключи person_id и company_id. Один иностранный ключ будет нулевым в каждом случае.

Это нормально в "Железнодорожнике"? Если нет, то мы будем очень признательны за любые рекомендации.

10
задан Corey Quillen 8 August 2011 в 19:14
поделиться