以rake任务中的活动记录以编程方式查询数据库表

时间:2013-09-28 07:42:02

标签: ruby-on-rails activerecord

我正在做一个佣金任务:

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”(在第一个循环中),我不能用它来编程查询数据库。似乎不能以与实例变量和局部变量相同的方式评估常量。我如何以编程方式列出一系列列名?

1 个答案:

答案 0 :(得分:1)

尝试t.classify.constantize它会返回Type作为一个类,您可以在其上调用方法column_names或任何其他类方法。

详细了解classifyconstantize