Не называйте это Set. Так лежит безумие.
Дело в том, что определение класса завершается неудачно, потому что вы пытаетесь переопределить 'Set', который уже определен в глобальном контексте.
class Set < ActiveRecord::Base # You are attempting to define a constant 'Set'
# here, but you can't because it already exists
Вы можете поместить свой класс в модуль, и тогда вы не получите ошибку, потому что вы будете определять Set в пространстве имен.
module Custom
class Set < ActiveRecord::Base
end
end
Однако каждый раз, когда вы хотите использовать свой класс Set, вам придется ссылаться на него как Custom :: Set. Большая магия Rails не сработает, потому что она ожидает, что имена классов будут определены в глобальном контексте. Вы будете собирать плагины и драгоценные камни слева и справа.
Гораздо проще просто дать ему другое имя.
class CustomSet < ActiveRecord::Base
Вся магия работает, и не требуется никаких обезьян.