2012-03-28 114 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