有没有办法从现有的模型生成Rails灯具?

有没有办法从现有的模型生成Rails灯具?

问题描述:

我有一个没有测试的Rails 2.x应用程序。我可以手动写出测试,但有没有办法自动生成灯具?不用手工输入所有内容就太棒了。有没有办法从现有的模型生成Rails灯具?

我可以为所有模型运​​行脚本/再次生成,但一切已经存在,如果我正确理解生成器,我仍然需要输入所有属性。

我想过运行Rails的控制台和做例如...

>> y VendorUser.all.rand 

这会给我一些YAML所有的属性,但他们会出故障,它仍然是相当耗时耗时。

任何人都可以提出更有效的选择吗?

一般

我不考虑使用夹具一个好主意,但在这里不言而喻

desc "extracting data for fixtures" 
task :extract_fixtures => :environment do 
    sql = "SELECT * FROM %s" 
    skip_tables = ["schema_info","schema_migrations"] 
    ActiveRecord::Base.establish_connection 
    (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name| 
    i = "000" 
    File.open("#{RAILS_ROOT}/test/fixtures/#{table_name}.yml", 'w') do |file| 
     data = ActiveRecord::Base.connection.select_all(sql % table_name) 
     file.write data.inject({}) { |hash, record| 
     hash["#{table_name}_#{i.succ!}"] = record 
     hash 
     }.to_yaml 
    end 
    end 
end 
+4

我知道有人会说:“不使用固定装置。”我只知道它!我无法与工厂打交道。我最后一次尝试使用它们,我在这里花了几个小时试图理清奇怪的问题,从未达到解决方案。灯具像HTML表格:道德和哲学上错误,但100%可靠。谢谢。你的解决方案看起来不错 – Ethan 2011-05-12 00:27:35

+0

@Ethan IMO和两者之间总是存在妥协。它们不是相互排斥的。理想情况下,我会写我的项目,所以它不依赖于特定的行,但每隔一段时间,夹具可能是唯一的方法。特别是在传统项目上。 – thekingoftruth 2013-05-01 07:54:50