ruby-on-rails – 使用Rails constantize inflector调用命名空间类

ruby-on-rails – 使用Rails constantize inflector调用命名空间类,第1张

概述我有一个需要初始化的类,但它的命名空间如下: SomeThing::MyClass.new() 但是我在rake任务中从args中调用它,所以它以字符串形式出现: task :blah, [:my_class_name] => :environment do |t, args| class_name = args[:my_class_name].camelize.constantize p 我有一个需要初始化的类,但它的命名空间如下:

SomeThing::MyClass.new()

但是我在rake任务中从args中调用它,所以它以字符串形式出现:

task :blah,[:my_class_name] => :environment do |t,args|  class_name = args[:my_class_name].camelize.constantize  puts class_nameend

很明显,如果我像这样调用rake任务:

rake blah[my_class]

我的任务返回:

MyClass # <= Actual ruby object

但是我怎样才能让它在另一个方法之前链接的命名空间内运行,如下所示:

SomeThing::MyClass.new()

从作为输入提供的字符串?

解决方法 只需使用类名字符串并执行 *** 作,即可让您的生活更轻松

Something.const_get(args[:my_class_name]).new

这是一个简化版本(普通IRB,没有Rails):

module Something ; endclass Something::MyClass ; endmy_class_name = "MyClass"Something.const_get(my_class_name).new #=> #<Something::MyClass:0x007fa8c4122dd8>
总结

以上是内存溢出为你收集整理的ruby-on-rails – 使用Rails constantize inflector调用命名空间类全部内容,希望文章能够帮你解决ruby-on-rails – 使用Rails constantize inflector调用命名空间类所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1286703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存