Я хочу разрешить пользователям указывать функцию для вычисления некоторого свойства и хранить эту функцию в универсальном классе. То есть каждый экземпляр класса имеет один и тот же интерфейс, но результат вызова метода «вычислять» изменяется в зависимости от функции, предоставленной пользователем.Проанализируйте метод из строки и сохраните его в базе данных
Я также хотел бы сериализовать этот класс и сохранить его в базе данных для последующего использовать. Это то, о чем я думаю
class LogicalCharge < Charge
attr_reader :name, :type, :formula, :threshold
def initialize(name: nil, type: nil, formula: nil, threshold: nil)
super(name: name, type: type)
@formula = formula
@threshold = threshold
end
def parse(formula: nil)
end
def calculate(dimensions: nil)
parse(formula: formula).call(dimensions) < threshold
end
Любые советы о том, как лучше всего исходить из этого?
Выполнение введенного пользователем кода? Плохая, плохая идея (от безопасности POV) –
Любые советы по другому подходу? – Tarlen