我是懒惰的,不喜欢进行迁移。我想要制作我将要使用的模型,还有其他东西可以在ruby中找出我的迁移,因为.Net已经破坏了我。是否有一个宝石可以让我从模型中进行积极的记录迁移?甚至可以这样做,因为你从未在ruby中明确设置类型?
答案 0 :(得分: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!
答案 1 :(得分:2)
这没有任何意义。您的模型从模式中提取数据结构,它们不包含列/表定义。没有办法将表格结构从模型“推”到迁移中,这是不可能的。数据不存在。
这个模型,如所写的,可能会持久存在一个包含一千列或一列的表中,无法知道:
class User < ActiveRecord::Base
end
只需使用Rails生成器同时生成模型和迁移。
答案 2 :(得分:1)
因为你从未在ruby中明确设置类型
此外,您甚至从未在模型中列出字段。 ActiveRecord从数据库模式中发现它们,这是模式知识的 存储库。它只是这样工作。试图让它以另一种方式发挥作用会造成极大的痛苦和挫折。
答案 3 :(得分:0)
如果您正在使用旧数据库,则不需要迁移,也不需要迁移。如果你试图使用它,你的DBA可能会杀了你。
也就是说,我使用Sequel反向设计遗留数据库,为我们内部使用的工具创建模型,但没有给我们提供数据库布局。
作为其中的一部分,我通过Sequel访问模式,并获取字段名称和数据类型和大小。这是重建迁移所需的信息。
这不是一个神奇的子弹。你将不得不停止“超级懒惰”和“愚蠢”并编写代码来做到这一点,但这一切都是可行的。
手动转储模式,编写代码以选择重要信息,并将其写入单个迁移文件以启动系统。