/ / Ruby string "nil" a nil: NilClass nil (reverso de nil.inspect) - ruby

Cadena de rubí "nil" a nil: NilClass nil (reverso de nil.inspect) - ruby

Me pregunto cómo obtener de una cadena "nil" the nil: NilClass?

nil.inspect -> "nil"

Deseo algo como:

"nil".to_nil -> nil

Actualizar:

Como escribo en el comentario a continuación, es más fácil:

params[:form].each_pair{|k,v| fields[k] = k.to_s.include?("_id") ? v.to_nil : v

entonces

params[:form].each_pair{|k,v| fields[k] = k.to_s.include?("_id") ? (v == "nil" ? nil : v) : v }

Respuestas

1 para la respuesta № 1

Vuelva a abrir la clase de cadena si desea esta funcionalidad globalmente.

class String
def to_nil
if self == "nil"
nil
else
self
end
end
end

"nil".to_nil # => nil
"another string".to_nil # => "another string"

3 para la respuesta № 2

No veo el punto de un to_nil, porque bueno, siempre es nilentonces escribe nil. Pero si su pregunta es cuál es la operación inversa de inspect, puedes usar eval:

eval("nil") #=> nil

0 para la respuesta № 3

Podría evaluar la cadena "nil" por ejemplo:

=> eval("nil").nil?
irb> true