如何将Rails字符串"DateTime.tomorrow"解析为DateTime对象?
解析字符串"DateTime.tomorrow"为Rails的DateTime对象
可以实现,这里提供两种常见方式:
使用Ruby的
eval方法直接执行字符串代码:result = eval("DateTime.tomorrow") # result 等价于直接调用 DateTime.tomorrow 得到的DateTime对象注意:
eval会执行任意传入的字符串代码,如果字符串来自不可信来源(比如用户输入),会存在严重的安全风险,可能被注入恶意代码,使用前必须确保字符串来源完全可信。拆分字符串后手动调用方法:
先把字符串按.拆分为类名和方法名,再通过constantize获取类、send调用方法:str = "DateTime.tomorrow" klass_name, method_name = str.split(".") klass = klass_name.constantize result = klass.send(method_name)这种方式比
eval的风险略低,因为限制了调用范围,但同样要确保类名和方法名是安全可信的,避免触发危险方法。
内容的提问来源于stack exchange,提问作者marcHoll90
相关产品推荐
相关产品推荐

