У меня есть модель Identity
, в которой много types
(скажем, student
, teacher
). Каждый из этих типов имеет множество уникальных методов, определенных в разных модулях, а также множество общих методов.Включить модули в зависимости от типа мгновенного действия
Я хотел бы включить определенные модули в зависимости от мгновенных типов, чтобы избежать конфликта имен. Что-то вроде:
class Identity < ActiveRecord::Base
if instant.type =='student'
include Student
if instant.type == 'teacher'
include Teacher
end
end
Как мне это сделать?
Почему бы просто не наследовать классы учеников и учителей от Identity? –
Я согласен с Иваном, если сущность не может быть ОБОИХ учителем и учеником, вам лучше использовать STI - http://blog.thirst.co/post/14885390861/rails-single-table-inheritance – house9
Спасибо, Иван и house9. ИППП является разумным вариантом. К сожалению, у меня есть большой код устаревшего кода, который, скорее всего, сломается, если будет преобразован в STI (например, сложный ключевой камень, который я использовал, может сломать индексирование). – AdamNYC