【问题标题】:How to reverse a 'rails generate'如何扭转'rails generate'
【发布时间】:2011-05-08 20:42:09
【问题描述】:

我想删除它创建的所有文件并回滚所做的任何更改,但不一定是数据库,而是配置文件。

我想自动删除在 routes.rb 文件中删除的模型/控制器的所有资源映射以及可能已进行更改的其他任何位置?

【问题讨论】:

    标签: ruby ruby-on-rails-3 rails-generate


    【解决方案1】:
    rails destroy controller lalala
    rails destroy model yadayada
    rails destroy scaffold hohoho
    

    Rails 3.2 在命令中添加了一个新的d 快捷方式,所以现在您可以编写:

    rails d controller lalala
    rails d model yadayada
    rails d scaffold hohoho
    

    【讨论】:

    • 顺便说一句,如何使用此命令删除脚手架?模型和控制器工作正常......但我如何完全反转脚手架?
    • 好的,我想通了。也许我打错了什么。我刚刚跑了rails destroy scaffold lalalal 并且成功了。
    • @marcamillion 一定是那个额外的“L”。
    • 如何删除与 gem 安装相关的文件,例如 rails generate <gemname>:install
    • @doug,我认为这是不可能的。最好的办法是使用-f 标志重新运行生成器以强制它重新创建/重新编辑文件……然后您可以查看它创建/更改了哪些文件,然后继续手动删除它们。
    【解决方案2】:

    这里值得一提的是-p 标志(“p”代表假装)。

    如果您将其添加到命令中,它只会执行“测试”运行并显示将删除哪些文件而不实际删除它们。

    $ rails d controller welcome -p
    
      remove  app/controllers/welcome_controller.rb
      invoke  erb
      remove    app/views/welcome
      invoke  test_unit
      remove    test/controllers/welcome_controller_test.rb
      invoke  helper
      remove    app/helpers/welcome_helper.rb
      invoke    test_unit
      remove      test/helpers/welcome_helper_test.rb
      invoke  assets
      invoke    coffee
      remove      app/assets/javascripts/welcome.js.coffee
      invoke    scss
      remove      app/assets/stylesheets/welcome.css.scss
    

    如果您对此感到满意,请再次运行该命令,不带 -p 标志。

    【讨论】:

    • 我认为这是最好的答案
    【解决方案3】:

    rails destroy controller Controller_name 返回一堆错误。为了能够销毁控制器,我必须删除 routes.rb 中的相关路由。附言我正在使用 Rails 3.1

    【讨论】:

    • 除非您打算将此答案作为选定的正确答案,否则请不要总结您的行为。
    【解决方案4】:

    这是在 Rails 中生成或销毁控制器或模型的原型:

    rails generate/destroy controller/model [controller/model Name]
    

    例如,如果你需要生成一个用户控制器:

    rails generate controller User
    

    rails g controller User
    

    如果您想销毁用户控制器或恢复到上述操作 然后使用:

    rails destroy controller User
    

    或:

    rails d controller User
    

    【讨论】:

      【解决方案5】:

      您可以使用rails d model/controller/migration ... 来销毁或删除使用rails generate 命令生成的更改。

      例如:

      rails g model Home name:string
      

      创建一个名为home 的模型,其属性为name。要删除从该命令生成的文件和代码,我们可以使用

      rails d model Home
      

      【讨论】:

        【解决方案6】:

        如果您使用 Rails,请使用 rails d controller Users

        而且,如果您使用 Zeus,请使用 zeus d controller Users

        另一方面,如果您使用的是 git 或 SVN,请使用提交号恢复您的更改。这要快得多。

        【讨论】:

          【解决方案7】:

          你可以摧毁所有以相同方式创造的东西,除了一点点改变。 对于控制器,

          rails d controller_name (d stands for destroy)
          

          对于模型

          rails d model_name
          

          您只需在迁移中输入 d(destroy) 而不是 g(generate)

          【讨论】:

            【解决方案8】:

            如果您希望手动删除控制器:

            对于控制器welcome

            rm app/controllers/welcome_controller.rb
            rm app/views/welcome
            rm test/controllers/welcome_controller_test.rb
            rm app/helpers/welcome_helper.rb
            rm test/helpers/welcome_helper_test.rb
            rm app/assets/javascripts/welcome.js.coffee
            rm app/assets/stylesheets/welcome.css.scss
            

            【讨论】:

              【解决方案9】:

              你可以恢复你的

              rails g/generate controller/model/migration xxx
              

              使用输出:

               rails d/destroy controller/model/migration xxx
              

              【讨论】:

                【解决方案10】:

                假设我创建了一个名为“sample”的控制器,例如:

                rails generate controller sample
                

                如果我必须销毁这个控制器,我所要做的就是将generatedestroy 交换,如

                rails destroy controller sample.
                

                如果你想反向生成,你所要做的就是把generate换成destroy

                【讨论】:

                  【解决方案11】:

                  您可以通过以下方式撤消rails generate

                  • 型号:rails destroy MODEL
                  • 对于控制器:rails destroy controller_name

                  【讨论】:

                    【解决方案12】:

                    要扭转这种情况,我们只需将其销毁即可。打开终端应用程序并转到项目目录,然后键入:

                    rails destroy model CamelCase
                    rails destroy controller CamelCase
                    

                    其中CamelCase 是任何模型或控制器的名称。 它将删除模型、迁移和一些相关的测试文件。 (运行命令后,您可以在终端窗口中看到结果。)

                    【讨论】:

                      【解决方案13】:

                      要反转rails generate,请使用rails destroy

                      rails destroy Model
                      

                      有关详细信息,请参阅“rails destroy”。

                      【讨论】:

                        【解决方案14】:

                        我们使用生成作为 rails generate app。 所以重新生成任何generate 语句可以使用destroy 语句来反转。 只需将generate 替换为destroyrails generate app可以写成rails destroy app' rails generate ____asrails destroy ____`

                        【讨论】:

                          【解决方案15】:

                          移除所选模型的脚手架:

                          bin/rails d scaffold <AccessControl> //model name
                          

                          【讨论】:

                            【解决方案16】:

                            在还原 rails generate 之前,请确保您先回滚迁移

                            案例1:如果你想恢复脚手架,那么运行这个命令:

                            rails destroy scaffold MODEL_NAME
                            

                            案例 2:如果要还原模型,请运行以下命令:

                            rails destroy model MODEL_NAME
                            

                            案例 3:如果你想恢复控制器然后运行这个命令:

                            rails destroy controller CONTROLLER_NAME
                            

                            注意:您也可以使用快捷方式d 代替destroy

                            【讨论】:

                              【解决方案17】:

                              所有版本的 rails 都有一个“destroy”,因此,如果您使用生成器创建(例如)名为“tasks”的脚手架,要销毁该生成步骤的所有更改,您必须键入:

                              rails destroy scaffold Tasks
                              

                              希望对你有帮助。

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2017-04-04
                                • 1970-01-01
                                • 2011-05-19
                                • 2014-10-24
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多