Даете юзеру роль (Физ. лицо / Юр. лицо)
Все роле-специфические поля складываете в хэш. Если используете постгрес - hstore, если sqlite или mysql - то
store accessor с полем типа text
Если же у вас не постгрес и нужно индексировать эту информацию, то неповезло.
Первый самый простой вариант -
STI. Но нужно понимать, что если полей разных много, то будет много нулевых значений в базе. Это не так что б очень критично, но помнить и понимать - нужно.
Если первый вариант не подошел (не испольщуете постгрес или монгу, то есть, нет поддержки NoSQL), то нужно нормализовывать базу.
Делаете юзера. А у юзера связь с моделью PhysicalUserInfo, LegalEntityUserInfo
Или, как вариант нормализации, создаете сущность "Свойство", которое принадлежит роли. И у одного пользователя будет одно количество свойст (для физлица), у другого - другое (для юрлица) (тогда, конечно, еще и роль вынести в модель для порядка)