繁体   English   中英

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

[英]Rails - How to create database tables from models (I have no migration scripts)

我是铁杆的新手,也是一个很棒的平台。

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

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

我无法在网上找到它,我确信这可能是一个选择,像任何其他平台(java hibernate等)那样做

命令rails generate ...只创建没有列的表,但我在现有模型中有列。 那怎么能这样呢?

谢谢!

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

如果您使用其中的重要部分创建迁移,因为您会注意到格式非常相似,您将能够在其他系统上复制该配置。

不过,这有点像一种严厉的方式。 每个模型都应该有相关的迁移。 通常,这些永远不会被删除,只有在必要时才会被修改,保留了模式如何演变成最终状态的历史。

如果我正确理解你的问题,实际上没有办法从ActiveRecord模型类构建数据库表 - 最好将ActiveRecord模型视为不同风格的关系数据库和Ruby对象之间的映射。 换句话说,ActiveRecord模型抽象出数据库的细节,以便与数据库无关。 它们使您可以在Ruby中更轻松地访问数据库数据。 这样做,他们没有权力构建你的表。 将它们视为非常漂亮的getter和setter,而不是绑定到数据库。

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

tl;博士:你需要你的迁移。 它们存在于Rails中的事实是有意的设计决定,将Ruby的一半模型与数据库的一半分开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM