ActiveRecord を使用して、他のフィールドに関連する正規表現をデータベース テーブルに格納する必要があります。
私は述べているRegexpクラスでto_sメソッドを見つけました
正規表現とそのオプションを含む文字列を返します ((?opts:source) 表記を使用します。この文字列は、元と同じセマンティクスを持つ正規表現に Regexp::new にフィードバックできます。(ただし、Regexp#例が示すように、正規表現自体のソースが異なる可能性があるため、== は 2 つを比較するときに true を返さない場合があります) Regexp#inspect は、一般的に読みやすいバージョンの rxp を生成します。
したがって、これは有効な解決策のように見えますが、exp を通常とは異なる構文で格納するため、格納する文字列を取得するには、.xml を使用して手動でビルドする必要があり/my-exp/.to_s
ます。また、正規表現を直接編集できない場合があります。たとえば、単純な正規表現は次のようになります。
/foo/i.to_s # => "(?i-mx:foo)"
もう 1 つのオプションは、フィールドの内容を評価することです。そのため、単純な式を db 列に格納してeval(record.pattern)
から、実際の正規表現を取得するために を実行します。これは機能しており、正規表現レコードの管理を担当するのは私だけなので、アプリケーションのバグを除いて、それを行う上で問題はないはずです;-)
他に選択肢はありますか?私はdbフィールドでevalを実行したくないのですが、一方で、知らない構文で作業したくありません。