未定义的方法在rake任务中进行constantize

时间:2018-04-23 08:47:17

标签: ruby

我正在尝试运行此代码“

FACTORY = %w(ProcessedTransaction Chargeback).freeze
 FACTORY.constantize.each do |factory|
   factory.public_send(:delete_all)
   end
 end

但是我收到了这个错误:NoMethodError: undefined method constantize'for#`

你知道我怎么解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您只能在字符串上调用String#constantize,但您在数组var directories = ImageMetadataReader.ReadMetadata( new MemoryStream(bytes)); foreach (var directory in directories) foreach (var tag in directory.Tags) Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}"); 上调用它。

删除FACTORY并添加FACTORY.constantize

还要确保您有ActiveSupport::Inflector所需的

答案 1 :(得分:1)

默认情况下,ruby大写变量是常量,因此您无法在其上调用constantize。在你的情况下,它只是一个数组,所以这应该工作:

FACTORY = %w(ProcessedTransaction Chargeback).freeze
FACTORY.each do |factory|
  factory.constantize.public_send(:delete_all)
end