3

我很懒惰,不喜欢迁移。我想制作无论如何都要使用的模型,并让其他东西在 ruby​​ 中为我找出迁移,因为 .Net 已经宠坏了我。是否有宝石可以让我从模型中进行主动记录迁移?由于您从未在 ruby​​ 中显式设置类型,这甚至可能吗?

4

4 回答 4

4

您可以使用DataMapper代替 ActiveRecord。

DataMapper 文档中的示例代码:

require 'rubygems'
require 'dm-core'
require 'dm-migrations'

DataMapper::Logger.new($stdout, :debug)
DataMapper.setup(:default, 'mysql://localhost/test')

class Person
  include DataMapper::Resource
  property :id,   Serial
  property :name, String, :required => true
end

DataMapper.auto_migrate!
于 2013-05-23T18:19:58.753 回答
2

这没有任何意义。您的模型从架构中提取数据结构,它们不包含列/表定义。没有办法将模型中的表结构“推送”到迁移中,这是不可能的。只是数据不存在。

写的这个模型可能已经持久化到一个有一千列或一列的表,没有办法知道:

class User < ActiveRecord::Base

end

只需使用 Rails 生成器同时生成模型和迁移。

于 2013-05-23T17:14:35.717 回答
1

因为您从未在 ruby​​ 中明确设置类型

此外,您甚至从不列出模型中的字段。ActiveRecord 从数据库模式中发现它们,数据库模式是模式知识存储库。它就是这样工作的。试图让它以另一种方式工作会造成巨大的痛苦和挫败感。

于 2013-05-23T17:14:43.717 回答
0

如果您使用的是旧数据库,则不需要迁移,也不需要迁移。如果您尝试使用 DBA,您的 DBA 可能会杀死您。

也就是说,我使用 Sequel 对遗留数据库进行了逆向工程,为我们内部使用的工具创建模型,这些工具没有给我们提供数据库布局。

作为其中的一部分,我通过 Sequel 访问架构,并获取字段名称、数据类型和大小。这是重建迁移所需的信息。

这不是灵丹妙药。您将不得不停止“超级懒惰”和“愚蠢”并编写代码来做到这一点,但这一切都是可行的。

手动转储模式,并编写代码以挑选出重要信息,并将其写入单个迁移文件以快速启动系统。

于 2013-05-23T17:21:44.470 回答