В Ruby классы не могут быть включены в другие классы - могут только модули. Классы могут использоваться только для «классического» вертикального наследования (класс наследуется от одного базового класса).
module StudyTypeEnum
def self.included(base)
base.extend Enumerize
base.class_eval do
enumerize :studytype, in: {:full_time, :part_time}
end
end
end
Поскольку код должен выполняться в контексте класса, включающего модуль, нам необходимо определить метод self.included
, который вызывается при включении класса. Вы также можете использовать ActiveSupport::Concern
, который охватывает эту распространенную идиому Ruby.
class Course < ApplicationRecord
include StudyTypeEnum
end
Я не уверен, как создать миграцию сейчас, мне нужно создать
Столбцы StudyType в моделях StudyTypeEnum и Course?
Поскольку StudyTypeEnum является модулем, который смешан с классами моделей, у него есть таблица.
Вам нужно только добавить столбец к фактическим моделям - в данном случае к Курсу - и к любой другой модели, в которую вы планируете включить StudyTypeEnum.