gpt4 book ai didi

ruby-on-rails - 在数据库中存储正则表达式

转载 作者:行者123 更新时间:2023-12-04 05:38:32 26 4
gpt4 key购买 nike

我需要使用 ActiveRecord 在数据库表中存储与其他字段相关的正则表达式。

我找到了 to_s Regexp 类中的方法声明

Returns a string containing the regular expression and its options (using the (?opts:source) notation. This string can be fed back in to Regexp::new to a regular expression with the same semantics as the original. (However, Regexp#== may not return true when comparing the two, as the source of the regular expression itself may differ, as the example shows). Regexp#inspect produces a generally more readable version of rxp.

所以这似乎是一个可行的解决方案,但它会使用不寻常的语法存储 exp,为了让字符串存储,我需要使用 /my-exp/.to_s 手动构建它.此外,我可能无法直接编辑为正则表达式。例如一个简单的正则表达式产生:

/foo/i.to_s # => "(?i-mx:foo)" 

另一种选择是评估字段内容,这样我可以将纯表达式存储在 db 列中,然后执行 eval(record.pattern) 以获得实际的正则表达式。这是有效的,因为我是唯一负责管理正则表达式记录的人,所以这样做应该没有问题,除了应用程序错误;-)

我还有其他选择吗?我宁愿不对数据库字段进行评估,但另一方面我不想使用我不知道的语法。

最佳答案

使用序列化“按原样”存储您的正则表达式

class Foo < ActiveRecord::Base
serialize :my_regex, Regexp
end

参见 API doc了解更多相关信息。

关于ruby-on-rails - 在数据库中存储正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13067564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com