Наследование одной таблицы в Sequel::Model (Ruby ORM)

У меня есть таблица в моей базе данных с именем providers со столбцом типа с именем provider_type. provider_type может быть одним из следующих:

  • центр
  • спонсор

Я хочу создать класс, который наследуется от Sequel::Model с именем Center и с именем Sponsor, результирующие методы для которых будут охватывать все запросы для соответствующего класса на provider_type = 'center' или provider_type = 'sponsor'.

Это не обязательно на 100%, чтобы я мог это сделать, но если это возможно, это было бы идеально.


person Patrick Klingemann    schedule 24.05.2012    source источник


Ответы (1)


Вам нужен плагин single_table_inheritance:

class Provider < Sequel::Model
  plugin :single_table_inheritance, :provider_type
end
class Center < Provider
end
class Sponsor < Provider
end

Это будет работать, но только если столбец provider_type точно соответствует «Центру» или «Спонсору». Если нет, вам может понадобиться добавить параметр :model_map к вызову плагина. Документация по этому подключаемому модулю находится по адресу http://sequel.jeremyevans.net/rdoc-plugins/classes/Sequel/Plugins/SingleTableInheritance.html

person Jeremy Evans    schedule 25.05.2012
comment
это даже чище, чем я надеялся. Спасибо! - person Patrick Klingemann; 25.05.2012