2012-03-28 112 views

回答

5

@布赖恩,

我使用下面的脚本来从一个给定的SQL

这是我的lib /任务目录下的rake任务

namespace :fixture_generator do 
    desc "generate fixtures for a given sql query from the current development database" 

    task :fixture_generator, [:sql, :file_name] => :environment do |t, args| 
    args.with_defaults(:sql => nil, :file_name => nil) 
    i = "000" 
    p "creating fixture - #{args.file_name}" 
    File.open("#{Rails.root}/test/fixtures/#{args.file_name}.yml", 'a+') do |file| 
     data = ActiveRecord::Base.connection.select_all(args.sql) 
     file.write data.inject({}) { |hash, record| 
     number = i.succ! 
     hash["#{args.file_name}_#{number}"] = record 
     hash 
     }.to_yaml 
    end 

    end 
end 

用途灯具,说我想为用户生成夹具表

rake fixture_generator:fixture_generator["select * from users","users"] 

而且,如果你使用相同的夹具文件名运行另一个查询,它将追加到现有的一个

HTH

+0

哇。这真的很整洁 - 我甚至不知道你可以做任务!谢谢。 – 2012-03-30 14:15:10

+0

@BrianW,很高兴它可以帮助你:) – sameera207 2012-03-30 20:04:36