我有一个服务类,可以帮助清理 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"
我在控制台中玩过,这是因为 splat 数组没有被转换为单独的参数,这与 Ruby 文档的建议相反。有人遇到过 Object#send 的问题吗?非常感谢任何帮助!