我希望动态地添加约束到ruby中的变量。我正在从一个文件中读取一个基本的类规范,它定义了类名、属性和关于属性的任何约束。例如,它可能是:
Class: Car
Attributes: model, String
Attributes: price, Fixnum
Constraint: model, model != nil
Constraint: price, price > 0
所以我写了下面这行来创建类和属性的attr_accessors:-
eval('class ClassName; attr_accessor:var_1; def test() puts "Test class"; end end')
但是有人对添加约束有什么建议吗?我不确定是否而不是attr_accessors它会更好有完整的getter/setter方法的约束可以追加到?
编辑:应该添加真正的新ruby和自学,所以请纠正任何愚蠢的错误或坏的想法
我为您的需要编写了一个非常未经修饰的gem: class_builder。它不安全(容易受到代码注入的攻击),而且可能有bug,我不会维护它。给你一些启示。
请参考测试查看其用法