1

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

我会将它与 sinatra 一起使用。

4

2 回答 2

2

您可以使用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_listModel association basics

于 2013-03-16T19:32:06.337 回答
1

它不是 ORM,但是有一个非常古老的 gem,叫做 magic_models 可以做到这一点,不确定它是否仍然有效:http ://magicmodels.rubyforge.org/

于 2013-03-16T19:35:25.483 回答