【问题标题】:Auto generate scaffolding for an existing database scheme in Rails 3在 Rails 3 中为现有数据库模式自动生成脚手架
【发布时间】:2011-07-08 11:44:32
【问题描述】:

我有现有的数据库,我想自动生成控制器和视图,以包括具有字段大小而不是 null 验证的模型。我研究了一个名为 Magic Model Generator 的项目,但它看起来很旧,只能根据我能说的内容创建模型。

我希望这主要是为了节省时间,并且我知道大多数控制器和视图对于面向用户的功能来说没有用处。我将挑选出我不需要的内容并将其大部分移至管理页面。

有没有工具可以做到这一点?

TIA!

编辑:我想创建实际文件并且不想要动态管理员。我将使用控制器和视图来查看网站的一些正面部分。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 code-generation


    【解决方案1】:

    不确定是否适用于 Rails 3,但适用于 Rails 4! 以下步骤教您如何从现有数据库构建模型、表单、控制器等。

    1. 建模和部署您的数据库,这与您的 Rails 应用程序无关。
    2. 将您的 Rails 应用 config/database.yml 指向此类数据库
    3. 打开终端
    4. 将目录更改为您的 rails 应用程序根目录(在终端 cd /path/to/my/rails/app/ 中运行)。
    5. 在终端运行 rake db:schema:dump(生成 schema.rb)
    6. 安装 gem 'schema_to_scaffold' (https://github.com/frenesim/schema_to_scaffold/)
    7. 在终端 scaffold 中运行以生成 rails 脚手架命令并按照请求进行操作
    8. 将步骤 7 生成的“rails 脚手架命令”复制到单独的 .txt 文件中
    9. 分别运行每个“rails scaffold 命令”
    10. 要快乐!

    希望对你有帮助!

    【讨论】:

    • 这在 Rails 4.0 中完美运行!谢谢你的建议,这正是我想要的。
    • 在 RoR 4.2 上是完美的!
    • 太棒了!如果你像我一样有 300 多张桌子。你能在文件的第一行添加#! /bin/sh,添加权限chmod +x filename并作为脚本运行。
    【解决方案2】:

    我相信这个问题在这里得到了回答: How to run `rails generate scaffold` when the model already exists? 和这里: rails g scaffold for existing model and DB table

    简短的回答是(例如模型 = 帖子)

    rails generate scaffold_controller Post
    

    【讨论】:

    • 我希望从现有的数据库表而不是模型中生成。
    • 为什么不创建一个简单的模型指向数据库表呢? rails 生成模型 Post
    • 这将创建所有带有表单和字段的视图?
    • 如果你创建模型,然后运行scaffold_controller命令,是的,它会生成所有带有表单和字段的视图。
    • 我在app/models 中有一个class Stuff < ApplicationRecord; end 但命令rails g scaffold_controller Stuff 不会生成app/views/stuff/show.html.erb 中的所有字段
    【解决方案3】:

    【讨论】:

      【解决方案4】:

      我认为您可以使用它来解决部分问题。将 Rails 应用程序指向旧数据库后,执行 rake db:schema:dump,您可以使用名为 schema_to_scaffold 的 gem 生成脚手架脚本。 它输出:

      rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string

      从您的 schema.rb 我们重命名的 schema.rb。检查here

      【讨论】:

        猜你喜欢
        • 2011-05-06
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多