Ruby是否有能够从现有数据库生成模型/迁移脚本的ORM?
我将与sinatra一起使用。
答案 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_list和Model association basics。
答案 1 :(得分:1)
这不是一个ORM,但是有一个叫做magic_models的非常古老的宝石会这样做,不确定它是否仍然有效:http://magicmodels.rubyforge.org/