Ruby on rails Rails-如何从模型创建数据库表(我没有迁移脚本)

Ruby on rails Rails-如何从模型创建数据库表(我没有迁移脚本),ruby-on-rails,ruby,rake,Ruby On Rails,Ruby,Rake,我是rails的新手,这是一个很棒的平台 我创建了一个应用程序,但删除了所有迁移脚本 我想用现有模型中的表创建数据库 我在网上找不到它,我相信这可能是一个像其他任何平台(JavaHibernate等)一样的选择 命令rails生成。。。只创建没有列的表,但我在现有模型中有列。那我该怎么做呢 谢谢 如果您不小心删除了模型,并且没有进行任何迁移,您仍然可以通过运行rake db:migrate并使用它来生成db/schema.rb文件。无论您对数据库做了什么,它都应该反映数据库的当前状态 如果您创建

我是rails的新手,这是一个很棒的平台

我创建了一个应用程序,但删除了所有迁移脚本

我想用现有模型中的表创建数据库

我在网上找不到它,我相信这可能是一个像其他任何平台(JavaHibernate等)一样的选择

命令rails生成。。。只创建没有列的表,但我在现有模型中有列。那我该怎么做呢


谢谢

如果您不小心删除了模型,并且没有进行任何迁移,您仍然可以通过运行
rake db:migrate
并使用它来生成
db/schema.rb
文件。无论您对数据库做了什么,它都应该反映数据库的当前状态

如果您创建了一个迁移,其中包含了该迁移的重要部分,您会注意到格式非常相似,您将能够在其他系统上复制该配置


不过,这是一种有点笨手笨脚的方式。每个模型都应该有其关联的迁移。通常情况下,这些内容不会被删除,只有在严格必要时才进行修改,以保留模式演变为最终状态的历史。

如果我正确理解您的问题,实际上,没有一种方法可以从ActiveRecord模型类构造数据库表——最好将ActiveRecord模型看作是不同风格的关系数据库和Ruby对象之间的映射。换句话说,ActiveRecord模型抽象掉了数据库的细节,以便变得独立于数据库。它们使您的数据库数据在Ruby中更容易访问。这样做,他们就没有能力构建您的表。可以将它们看作非常漂亮的getter和setter,而不是数据库的绑定

这正是迁移存在的原因——它们包含特定于数据库的内容。它们基本上包含模型定义的“另一半”——大多数应用程序级内容(比如关系,在MySQL中不存在,对吗?它们是ActiveRecord约定)都是在模型上定义的,但是,例如,如果你想在Foo模型上有一个字符串,你可以在迁移中定义它,并且适当的getter和setter将在您的模型上提供,供您使用此字符串

tl;dr:您需要迁移。它们存在于Rails中,这是一个有意的设计决策,将模型的Ruby部分与数据库部分分开