Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby – 在String和Classname之间转换大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含类名的字符串.例如,它是包含“Article”的字符串.该字符串来自params [].我该怎么做才能使用这个字符串,好像它是一个类名?例如,我想做:
Article.all

等等.

任何想法?

解决方法

此解决方案优于eval,因为您正在评估可能由用户操纵并可能包含有害操作的params散列.作为一般规则:永远不要直接评估用户输入,这是一个很大的安全漏洞.
# Monkey patch for String class
    class String
      def to_class
        klass = Kernel.const_get(self)
        klass.is_a?(Class) ? klass : nil
      rescue NameError
        nil
      end
    end

# Examples
"Fixnum".to_class #=> Fixnum
"Something".to_class #=> nil

更新 – 适用于命名空间的更好版本:

# Monkey patch for String class
    class String
      def to_class
        chain = self.split "::"
        klass = Kernel
        chain.each do |klass_String|
          klass = klass.const_get klass_String
        end
        klass.is_a?(Class) ? klass : nil
      rescue NameError
        nil
      end
    end

大佬总结

以上是大佬教程为你收集整理的ruby – 在String和Classname之间转换全部内容,希望文章能够帮你解决ruby – 在String和Classname之间转换所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。