В настоящее время у меня есть модель metric
, которая может принимать два operands
и выполнять вычисления на основе своего operation_type
, получая результат с помощью пользовательского метода результатов. Это работает, как и ожидалось.
Чтобы сделать это масштабируемым, я хотел бы иметь возможность использовать два операнда (как сейчас), один операнд и одну метрику или две метрики для выполнения вычислений. Причина этого в том, что он масштабируется — я могу использовать результаты предыдущих операций.
Где я застрял, так это в том, как создать это самосоединение - я полагаю, что мне нужно каким-то образом пойти по пути полиморфной ссылки на себя, но документация не приводит меня к ответу. В настоящее время у меня есть установка с моделью calculated_metric
, но я не уверен, что это правильный путь.
Мои модели выглядят следующим образом:
class Metric < ActiveRecord::Base
attr_accessible :name, :operation_type_id
end
class Operand < ActiveRecord::Base
attr_accessible :object, :attribute
end
class Calculated_metric < ActiveRecord::Base
attr_accessible :metric_id, :calculated_metric_id
end
Будем очень благодарны любой помощи. Спасибо!
РЕДАКТИРОВАТЬ: Возможно, я могу немного пояснить: в настоящее время у меня есть отдельная модель calculated_metric
; это лучший подход для использования результатов другой метрики в моем расчете, или я мог бы добиться этого проще, добавив left_metric
и right_metric
в мою существующую таблицу metric
(слева и справа так, что если уравнение представляет собой вычитание например знает какой отнимается)? Я не уверен, что это идеальное решение, так как в большом количестве случаев они будут нулевыми.