Cómo convertir la cadena a User
?¿Cómo convertir una cadena a una constante en Ruby?
Respuesta
Puede usar el método Module#const_get
. Ejemplo:
irb(main):001:0> ARGV
=> []
irb(main):002:0> Kernel.const_get "ARGV"
=> []
Si tiene ActiveSupport carga (por ejemplo, en los carriles) que puede utilizar
"User".constantize
El método recomendado es utilizar constantize de ActiveSupport:
'User'.constantize
También puede usar el kernel de const_get
, pero en Ruby < 2.0, no admite constantes de espacio de nombres, por lo que algo como esto:
Kernel.const_get('Foobar::User')
fallarán en Ruby < 2.0. Así que si quieres una solución genérica, lo mejor será utilizar el enfoque ActiveSupport:
def my_constantize(class_name)
unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ class_name
raise NameError, "#{class_name.inspect} is not a valid constant name!"
end
Object.module_eval("::#{$1}", __FILE__, __LINE__)
end
const_get funciona también para las constantes de espacio de nombres desde ruby 2.0 – untidyhair
Dado que Ruby 2.0 ha alcanzado la EOL, ya no es necesario recurrir a ActiveSupport como una dependencia para hacer referencia a una constante con una cadena. :-) – Drenmi
Consulte también ''User'.safe_constantize' –
Object.const_get("User")
No hay necesidad de requerir ActiveSupport.
+1 enfermo de active_support contaminando preguntas generales de ruby. –
Uso rubí método mágico: eval()
:
eval("User") #=> User
Esto es probablemente una exageración completa, ya que 'eval' no debe usarse así, y se deben evitar por completo las alternativas más específicas. – yagooar
- 1. ¿Cómo convertir una cadena o entero a binario en Ruby?
- 2. ¿Cómo convertir una cadena de valores hexadecimales a una cadena?
- 3. Convertir una cadena a variable
- 4. convertir una cadena a Stream
- 5. Convertir cadena a número decimal en ruby
- 6. Cómo convertir JSON a una cadena?
- 7. Cómo convertir un HTMLElement a una cadena
- 8. Cómo convertir una cadena a NSData
- 9. Cómo convertir una cadena a UTF8?
- 10. Cómo convertir una cadena a una fecha en sybase
- 11. ¿Cómo convertir una matriz a una cadena en PHP?
- 12. ¿Cómo convertir una cadena a una función en Clojure?
- 13. perl cómo convertir una cadena a Datetime?
- 14. Cómo convertir un int a una cadena?
- 15. Cómo convertir una cadena a android.net.Uri
- 16. Cadena constante como una cadena localizada
- 17. ¿Lanzar excepción al volver a asignar una constante en Ruby?
- 18. ¿Cómo convertir una cadena de notación científica a notación decimal?
- 19. Convertir una cadena a HEX en SQL
- 20. cómo convertir una cadena c en una cadena d?
- 21. ¿Cómo puedo encontrar dónde se define una constante en Ruby?
- 22. la conversión de una cadena a una constante definida en PHP
- 23. ¿Cómo convertir una cadena a ascii en binario en C#?
- 24. ¿Cómo puedo convertir una cadena de windows-1252 a utf-8 en Ruby?
- 25. Convertir una lista en una cadena
- 26. convertir una lista de booleanos a cadena
- 27. cómo convertir una cadena en un bool
- 28. cómo convertir una imagen en cadena base64
- 29. ¿Ruby tiene una constante para EOL multiplataforma en alguna parte?
- 30. Cómo convertir una cadena codificada en hexadecimal a una cadena de bytes en Perl?
¿Está intentando llamar a una función variable? – harbichidian
También me gustaría una respuesta a esta pregunta; sin embargo, ¿está tratando de crear una nueva constante basada en una cadena, O encuentra una constante ya inicializada? ¿También buscas rubíes vainilla o también rieles? – onebree