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 № 1Vuelva 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 nil
entonces 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