В настоящее время я работаю над приложением Rails 3, которое, похоже, может использовать наследование таблиц классов для пары моделей.
Вот упрощенный пример того, что происходит.
У меня есть класс Person с общими атрибутами, такими как имя, адрес электронной почты, пароль, которые являются общими для всех типов людей в приложении и используются для аутентификации.
Есть два подкласса для Person (или два типа людей). ..), водитель и пассажир. Оба эти подкласса имеют общие атрибуты Person, но затем имеют специфические дополнительные атрибуты, которые являются уникальными для них самих. (например, у водителя может быть много транспортных средств и лицензий, но у пассажира не будет)
Как бы я внедрил CTI для такой ситуации? Я искал пример, приведенный здесь:
http://rhnh.net/2010/08/15/class-table-inheritance-and-eager-loading
Но он не рассуждает о том, как чтобы получить доступ к общим атрибутам Person из объекта Driver или Passenger, и меня это немного смущает.
В частности, я хотел бы знать следующее:
Если я обновляю атрибуты водитель, Как я могу легко получить доступ и обновить соответствующие атрибуты в родительской таблице людей? Нужно ли подключаться к обратному вызову after_save и выделять, куда и куда идет обновление атрибута? Или есть лучший способ подойти к этому?
почему бы не использовать однотабличное наследование? например:
class Person < ActiveRecord::Base
# some common code here
end
class Driver < Person
# Driver code
end
class Passenger < Person
# Passenger code
end
таким образом у вас будет общий класс Person, плюс два конкретных класса, производных от него