/ / Cadeia de caracteres Ruby “nil” para nil: NilClass nil (reverso de nil.inspect) - ruby

Sequência de ruby ​​“nil” a zero: NilClass nil (reverso de nil.inspect) - ruby

Eu me pergunto como obter de uma string "nil" o nulo: NilClass?

nil.inspect -> "nil"

Eu desejo algo como:

"nil".to_nil -> nil

Atualizar:

Conforme escrevo o comentário abaixo, é mais fácil:

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

então

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

Respostas:

1 para resposta № 1

Abra novamente a classe de string se quiser essa funcionalidade 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 resposta № 2

Eu não vejo o sentido de um to_nil, porque bem, é sempre nilentão escreva nil. Mas se sua pergunta é qual é a operação inversa de inspect, você pode usar eval:

eval("nil") #=> nil

0 para resposta № 3

Você pode avaliar a string "nil", por exemplo:

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