Наследование таблицы класса Sequel

Я надеюсь начать проект, используя наследование таблицы нескольких / классов в Rails. Для этого я планирую использовать сиквел вместо ActiveRecord. Документы можно найти ЗДЕСЬ-Продолжение-наследование таблицы класса

У меня плагин работает до такой степени, что я могу вызвать ребенка.первый и он даст мне первый из дочерних классов, который не является первым из родительского класса, и он включает в себя данные из дочерней таблицы. Проблема в другом…

Поэтому, если я загружаю строку db через родительский класс, который оказывается классом child2

p = Parent.first <Parent @values = {kind = "Child2"}>

а затем попытайтесь получить дочерние данные с помощью команды обновить, указанной в документах, которые она должна мне предоставить

p.refresh <Parent @values = {kind = "Child2", child2data = "data from child 2 table"}>

но это не так, он просто возвращает неизмененный родитель

Я включил карту модели в свой родительский класс

 plugin :class_table_inheritance,:key=>"kind", :model_map=>{"Child1"=>:Child1,"Child2"=>:Child2}

И я играл с другими ценностями и другой ерундой, чтобы попытаться заставить его работать, но безуспешно.

Что я в идеале хочу, чтобы иметь возможность найти родителя и вызвать метод для экземпляра дочернего класса так

p = Parent.first
c = p.child
c <Child2 @values = {kind: "Child2", Child2data: "data from child2 table">

Я чувствую, что я, вероятно, могу взломать / добавить метод к моему родительскому классу, чтобы сделать это, но он просто чувствует себя довольно просто в этот момент, что я не должен, а также тот факт, что метод обновления не работает беспокоит меня и id, как это будет решаться

У кого-нибудь есть ответ? ty для чтения

p.s. i am using rails 5, the rails-sequel gem, and am working in a project that is more or less blank, i just want to have a decent CTI setup because to me it seems so much more elegant than Polymorphic associations.

1 ответ

  1. Используйте :key=>:kindв вызове плагина, который должен исправить ваши проблемы. Если вам нужен p.childметод, используйте ассоциации вместо плагина class_table_inheritance.