2011-07-11 37 views

回答

11

这可能听起来很愚蠢,但是听我说......当我想要开始干净的时候,我自己也做了几次这样的事情。下面是一个脚本,将读取你的架构和产生必要的生成命令,以重现:

require 'rubygems' 
require 'active_support/core_ext' 
schema = File.read('db/schema.rb') 
schema.scan(/create_table "(\w+)",.*?\n(.*?)\n end/m).each do |name, ddl| 
    puts "rails generate scaffold #{name.classify} " + 
    ddl.scan(/t\.(\w+)\s+"(\w+)"/). 
    reject {|type,name| %w(created_at updated_at).include? name}. 
    map {|type,name| "#{name}:#{type}"}.join(' ') 
end 

如果你运行它,你会得到一系列命令。在一个新目录中,创建一个新的rails应用程序,然后运行这些命令(只需复制并粘贴它们即可)。抓住你想要的文件。完成后删除目录。

+0

这很有帮助。谢谢。 –

+1

这很好,但https://github.com/frenesim/schema_to_scaffold更彻底地充实了这一点。 – dankohn

2

我不相信有一个命令来生成单个文件......只有一个整个脚手架。

是否有你想要生成该文件的原因?你不确定内容应该是什么?

+0

原因是我添加了一堆字段并希望自动生成该文件。 –

+0

啊......你最好的选择是把它们添加进你自己。您可以重新生成您的模型脚手架,但最终您还是会输入所有列名称和类型。 –

1

如果您还没有模型的控制器,您可以生成控制器,指定您的入口点并为您创建视图,但是,如果您希望已经有_form.html。*文件用“丑陋”的默认视图编写,你可能不得不使用脚手架来做到这一点。

这是一个很好的guide on generators and other rails command line options

2

您可以使用这种 “反向脚手架” 脚本:

https://github.com/ahe/reverse_scaffold

它会生成所需的html.erbb文件就在你的应用程序/ views文件夹。

它在自述文件页面上有很好的解释。

而且,它已更新为Rails 3.2