我可以从我的 schema.rb on rails 创建一个脚手架吗?

Posted

技术标签:

【中文标题】我可以从我的 schema.rb on rails 创建一个脚手架吗?【英文标题】:can I create an scaffold from my schema.rb on rails? 【发布时间】:2013-05-26 10:15:36 【问题描述】:

我正在尝试为我创建的一个新表创建脚手架(包含所有方法和所有),它在我的数据库上,并且我已经添加到我的 schema.rb,但我不知道该怎么做,有人知道吗知道我应该运行的命令或类似的东西吗?我找到了从 db 到 schema 的选项,但没有从 schema.rb 到脚手架。

谢谢

【问题讨论】:

【参考方案1】:

首先,我强烈建议您阅读这篇文章: Getting up and running quickly with scaffolding

我不太确定我是否正确理解了您的问题。但据我所知,你肯定做错了什么。例如通过命令完成脚手架:

rails generate scaffold User name:string title:string bio:text

您写道,您已经在 DB 中创建了表。所以这表明我,你没有遵循脚手架,或更重要的 Rails 原则。如果您手动将表添加到数据库中。

继续阅读入门指南,它会对您有所帮助。

【讨论】:

谢谢!!我尝试了类似的方法,但没有创建所有字段,我不确定在那之后我是否必须像我一样运行 bundle exec rake db:migrate ......但是缺少一些字段,现在没有任何工作 rails 生成后,您需要运行 rake db:migrate 。这将更新我们的数据库并在那里创建最新的表。【参考方案2】:

您通常使用 schema.rb 作为查看数据库中表和列的便捷方式。

Scaffold 在运行时会创建新表,例如 rails g scaffold Post name:string,其中 Post 是模型 (post.rb)、控制器 (posts_controller.rb) 和数据库表的名称,其列名称为是字符串。(在 rake db:migrate 之后在 schema 中查找)

在您的项目中启动脚手架并找到架构以查看它的表已经到位。

【讨论】:

【参考方案3】:

使用:

scaffold -c -p db/schema.rb

这将生成一个命令列表,您将执行这些命令来生成模型视图控制器组件。

但是,这不会在模型上插入限定符(has_many、belongs_to 等)。

我想知道是否有一个选项可以从 schema.rb 上列出的外键中启用它

【讨论】:

【参考方案4】:

使用这个宝石https://github.com/frenesim/schema_to_scaffold

Usage: scaffold [options] 

Generate a rails scaffold script for a given schema.rb
 -h             Displays help.
 -p <path>      It specifies a path to a folder or to a file.
 -c             Will copy the script to your clipboard. Requires xclip be installed on Linux.
 -f             Generates a factory_girl:model rather than a full scaffold.
 -m             Add migration (use if your schema comes from a different database)

Examples:
scaffold
scaffold -c -p ~/work/rails/my_app
scaffold -c -p ~/work/rails/my_app/db/schema.rb

【讨论】:

以上是关于我可以从我的 schema.rb on rails 创建一个脚手架吗?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 迁移不会更改 schema.rb

Rails 5:为啥即使我删除了迁移文件,rails 也会向 schema.rb 添加列

Rails 架构未随迁移而更新

为两个数据库生成 schema.rb 文件

您如何编写 Rails 迁移以删除 schema.rb 中的 :id => false 选项?

无法从 Rails 4 和 PSQL 9.3 中的表中删除索引