質問: :id", {id: 1}])` といった、SQL内にコロンを含む、かつ、パラメータ名の置換を行うケースを実行したいのですが、SQL内のコロンが置換とみなされてしまいエラーが発生してしまいます 通常のコロンと、置換のためのコロンを区別するようなエスケープの方法は提供されていないのでしょうか?
回答: ``` SomeModel.find_by_sql(["SELECT 1 FROM ip_addrs WHERE ip_addr = CONCAT(':', 'FFFF') AND id = :id", {id: 1}]) ``` のように SQL 層での文字列連結文法に書き換えることで、コロンの直後に [a-zA-Z] が出現することを回避できます ActiveRecord::Sanitization::ClassMethods.replace_named_bind_variables の正規表現にマッチしなくなるため、SQLの文字列中のコロンを rails による破壊から保護することができます