解析方法,并将其存储在数据库
我想允许用户指定的函数计算某些属性,并希望这个函数存储在一个泛型类。也就是说,类的每个实例都具有相同的接口,但调用'calculate'方法的结果因用户提供的函数而异解析方法,并将其存储在数据库
我还想序列化此类并将其存储在数据库中供以后使用使用。这就是我在想的
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
有关如何从这里继续下去的任何建议?
我建议,你有相关的类层次结构,一个用于每个电流计算功能的变化,和表类名字段和每个运行它的参数不同的方法。
由于类都将遵循相同的接口,这应该很好地工作。然后,您可以干净地清理用户输入,并避免让用户直接在服务器上放置可执行代码的可怕安全隐患。
事情是,我可能有10多种不同的计算方法,我是否需要为每个人和每个人划分子类? – Tarlen 2014-09-10 11:12:30
@Tarlen他们有什么不同?如果函数是复杂的,算法依赖于变量,分离成不同的类是有意义的。如果使用不同参数的算法是相同的,只需要一个类,并将参数存储在数据库中,而不需要类名。 – 2014-09-10 11:37:51
执行用户提供的代码?坏的主意(来自安全POV) – 2014-09-10 10:01:30
对另一种方法有何建议? – Tarlen 2014-09-10 11:13:14