Ruby中的Code-First等价物

时间:2013-05-23 17:10:07

标签: .net ruby entity-framework code-first rails-activerecord

我是懒惰的,不喜欢进行迁移。我想要制作我将要使用的模型,还有其他东西可以在ruby中找出我的迁移,因为.Net已经破坏了我。是否有一个宝石可以让我从模型中进行积极的记录迁移?甚至可以这样做,因为你从未在ruby中明确设置类型?

4 个答案:

答案 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访问模式,并获取字段名称和数据类型和大小。这是重建迁移所需的信息。

这不是一个神奇的子弹。你将不得不停止“超级懒惰”和“愚蠢”并编写代码来做到这一点,但这一切都是可行的。

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