2013-03-16 99 views
1

Ruby是否有能够从现有数据库生成模型/迁移脚本的ORM?ORM for Ruby,能够从现有数据库生成模型/迁移脚本

我会用它与sinatra。

+0

只是为了检查,你的意思是生成_models_的代码,_migrations_不脚本? – iain 2013-03-16 19:35:13

+0

用于迁移的umm ..脚本也将执行:3 – Kokizzu 2013-03-16 20:18:00

+0

什么是“模型脚本”? – 2013-03-16 20:31:12

回答

2

您可以使用Sequel's migrations转储现有模式(请参阅“将当前模式作为迁移转储”到链接页面下)。

此外,我知道如果您使用Postgresql或MS SQL Server,则可以将数据库转储为脚本,既可以作为架构,也可以作为数据。如果您要使用的ORM没有迁移工具(或者即使迁移工具),您也可以使用这些脚本,甚至将它们嵌入到迁移中(其他ORM可能也可以)。


编辑:生成模型。

如果你想生成模型,那么续集有一个reflection API。像这样的东西可以让你开始:

generator = ->(table) { 
    s = <<STR 
require 'sequel' 
class #{table} < Sequel::Model 
    # other stuff here 
end 
STR 
} 

DB.tables.reject{|name| name == :schema_info } 
     .each do |table| 
      File.new "app/models/#{table}.rb" do |f| 
      f.write generator.call(table) 
      end 
     end 

做关联会更困难,但我认为可能。看看Database#foreign_key_listModel association basics