Ruby 的 ORM 是否能够从现有数据库生成模型/迁移脚本?
我会将它与 sinatra 一起使用。
您可以使用Sequel 的迁移来转储现有架构(请参阅链接页面下方的“将当前架构转储为迁移”)。
另外,我知道如果您使用的是 Postgresql 或 MS SQL Server,您可以将数据库转储到脚本中,既可以作为模式也可以作为数据。如果您要使用的 ORM 没有迁移工具(或者即使有),您可以使用这些脚本,甚至将它们嵌入到迁移中(Sequel 也将接受标准 SQL 字符串,其他 ORM 可能也可以)。
编辑:生成模型。
如果你想生成模型,那么 Sequel 有一个反射 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。
它不是 ORM,但是有一个非常古老的 gem,叫做 magic_models 可以做到这一点,不确定它是否仍然有效:http ://magicmodels.rubyforge.org/