可以从现有数据库生成模型/迁移脚本的Ruby ORM

时间:2013-03-16 17:35:23

标签: ruby orm sinatra

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

我将与sinatra一起使用。

2 个答案:

答案 0 :(得分:2)

您可以使用Sequel's migrations转储现有架构(请参阅链接页面中的“将当前架构转储为迁移”)。

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


编辑:生成模型。

如果你想生成模型,那么Sequel有一个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

答案 1 :(得分:1)

这不是一个ORM,但是有一个叫做magic_models的非常古老的宝石会这样做,不确定它是否仍然有效:http://magicmodels.rubyforge.org/