我正在做一个佣金任务:
task :populate => :environment do
table_array = ActiveRecord::Base.connection.tables #=> ["types","products"]
table_array.each do |t|
puts t
instance_string = t.capitalize.singularize.to_s #=> "Type" (on the first loop)
puts Type.column_names #=> ["id", "type_name", "created_at", "updated_at"]
# This will return an error, undefined method 'column_names'
puts "#{instance_string}".column_names
end
end
现在,尽管有一个实例字符串“Type”(在第一个循环中),我不能用它来编程查询数据库。似乎不能以与实例变量和局部变量相同的方式评估常量。我如何以编程方式列出一系列列名?
答案 0 :(得分:1)
尝试t.classify.constantize
它会返回Type
作为一个类,您可以在其上调用方法column_names
或任何其他类方法。
详细了解classify和constantize