JSON ペイロードからデータをサニタイズするのに役立つサービス クラスがあります。
attr_reader :data, :method, :args
def self.call(*args)
new(*args).call
end
def initialize(data, sanitization_method, *method_args)
@data = data
@method = sanitization_method
@args = *method_args
end
def call
data.send(method, args)
end
問題は、クラス メソッドを呼び出すと、列挙子が返されることです。
PaidGigs::Services::SanitizeData.call("shd234", :gsub, /[^0-9]/, "")
=> #<Enumerator: "shd234":gsub([/[^0-9]/, ""])>
メソッドを評価して返す代わりに:
=> "234"
私はコンソールで遊んでみましたが、それは、Ruby ドキュメントが示唆していることに反して、splat 配列が個々の引数に変換されていないためです。Object#send でこの問題が発生した人はいますか? どんな助けでも大歓迎です!