Наследование таблиц классов в Rails 3

В настоящее время я работаю над приложением Rails 3, которое, похоже, может использовать наследование таблиц классов для пары моделей.

Вот упрощенный пример того, что происходит.

У меня есть класс Person с общими атрибутами, такими как имя, адрес электронной почты, пароль, которые являются общими для всех типов людей в приложении и используются для аутентификации.

Есть два подкласса для Person (или два типа людей). ..), водитель и пассажир. Оба эти подкласса имеют общие атрибуты Person, но затем имеют специфические дополнительные атрибуты, которые являются уникальными для них самих. (например, у водителя может быть много транспортных средств и лицензий, но у пассажира не будет)

Как бы я внедрил CTI для такой ситуации? Я искал пример, приведенный здесь:

http://rhnh.net/2010/08/15/class-table-inheritance-and-eager-loading

Но он не рассуждает о том, как чтобы получить доступ к общим атрибутам Person из объекта Driver или Passenger, и меня это немного смущает.

В частности, я хотел бы знать следующее:

Если я обновляю атрибуты водитель, Как я могу легко получить доступ и обновить соответствующие атрибуты в родительской таблице людей? Нужно ли подключаться к обратному вызову after_save и выделять, куда и куда идет обновление атрибута? Или есть лучший способ подойти к этому?

13
задан Ganesh Shankar 17 August 2010 в 04:06
поделиться

1 ответ

почему бы не использовать однотабличное наследование? например:

class Person < ActiveRecord::Base
   # some common code here
end

class Driver < Person
   # Driver code
end

class Passenger < Person
   # Passenger code
end

таким образом у вас будет общий класс Person, плюс два конкретных класса, производных от него

5
ответ дан 1 December 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: