【问题标题】:Undo scaffolding in Rails在 Rails 中撤消脚手架
【发布时间】:2010-11-01 02:17:30
【问题描述】:

有什么方法可以“撤消”Rails 中脚手架命令的效果吗?

【问题讨论】:

    标签: ruby-on-rails ruby scaffolding


    【解决方案1】:

    首先,如果您已经运行了scaffold 命令生成的迁移,则必须先执行回滚。

    rake db:rollback
    

    您可以使用以下方法创建脚手架:

    rails generate scaffold MyFoo 
    

    (或类似的),并且您可以使用

    销毁/撤消它
    rails destroy scaffold MyFoo
    

    这将删除generate 创建的所有文件,但不会删除您手动进行的任何其他更改。

    【讨论】:

    • 在销毁脚手架之前不要忘记rake db:rollback。如果除了脚手架的迁移之外没有其他迁移,这将破坏/删除表。
    • 在某些情况下,仍有剩余文件未从脚手架中删除。检查您的版本控制,例如git status 和/或 git diff,查看 destroy 命令是否遗漏任何内容。
    • 如果你运行 rake db:migrate 之后做了一些其他的迁移,那么在“销毁”脚手架之前创建一个迁移来销毁表是有意义的。所以做类似 rails g migration DropMyFoos 然后打开迁移文件并添加删除表的代码。运行此迁移,然后运行销毁脚手架。
    • 还要记住,它会删除 my_foo 的视图文件夹,即使那里有额外的文件。
    【解决方案2】:

    Rishav Rastogi 是对的,并且使用 rails 3.0 或更高版本:

    rails 生成脚手架... 铁轨破坏脚手架...

    【讨论】:

    • @femi 这张桌子是用耙子做的。删除它的最佳方法是在 rails destroy scaffold 之前运行 rake db:rollback 或者如果它不是您最后一次 rake db:migrate:down VERSION=20080906120000 您可以在 db/migrate 中找到其名称之前的数字
    【解决方案3】:

    你可以撤消你所做的任何事情

    rails generate xxx
    

    rails destroy xxx
    

    例如,这会将生成器应用于迁移、脚手架、模型...等

    【讨论】:

      【解决方案4】:

      如果您只想查看生成器将创建的文件,您可以传递生成器 --pretend 或 -p 选项。

      【讨论】:

        【解决方案5】:

        最好的办法是:

        destroy rake db:  rake db:rollback
        

        对于脚手架:

        rails destroy scaffold Name_of_script
        

        【讨论】:

          【解决方案6】:

          第一次,如果你有生成脚手架,你可以检查你的数据库迁移。 你必须销毁它们来清理你的数据库

          rake db:rollback
          

          然后

          rails d scaffold
          

          【讨论】:

            【解决方案7】:
            rails d scaffold <scaffoldname>
            

            此外,请确保撤消通过回滚或到特定版本所做的迁移。

            【讨论】:

              【解决方案8】:

              生成脚手架:

              rails generate scaffold xyz
              

              要恢复脚手架:

              rails destroy scaffold xyz
              

              【讨论】:

                【解决方案9】:

                Rails 销毁名称

                rake db:rollback
                

                【讨论】:

                • 先回滚(如果你迁移了),然后销毁脚手架
                【解决方案10】:

                用于在 Rails 中生成脚手架 -

                rails generate scaffold MODEL_GOES_HERE
                

                用于撤消rails中的脚手架-

                rails destroy scaffold MODEL_GOES_HERE
                

                【讨论】:

                • 还有快捷键rails grails d
                【解决方案11】:

                你也需要在销毁脚手架后回滚迁移

                rails destroy scaffold 'scaffoldname'
                rake db:rollback
                

                【讨论】:

                  【解决方案12】:

                  所以,你应该按照流程来撤消rails 4中的脚手架。运行命令如下:

                  1. rails d scaffold FooBar
                  2. rake db:rollback if you_had_run_rake db:migrate 创建以上脚手架后?

                  就是这样!

                  干杯!

                  【讨论】:

                    【解决方案13】:

                    使用这个

                    rails d scaffold MODEL_NAME
                    
                    rake db:rollback
                    

                    【讨论】:

                      【解决方案14】:

                      推荐回滚首先,输入你的终端。

                      rake db:rollback
                      

                      添加销毁脚手架(“d”代表“销毁”)

                      rails d scaffold name_of_scaffold
                      

                      享受您的代码。

                      【讨论】:

                        【解决方案15】:

                        首先,您必须执行 rake db:rollback 以销毁表
                        如果你已经运行 rake db:migrate 然后你可以运行

                        rails d 脚手架模型

                        【讨论】:

                          【解决方案16】:

                          您需要先通过执行 rake db:rollback 来回滚迁移(如果有) 然后通过

                          破坏脚手架
                          rails d scaffold foo
                          

                          【讨论】:

                            【解决方案17】:

                            是的,scaffold 本身以及所有将它合并的东西。

                            destroy 命令与generate 相反,将撤消一个命令。只需以与 generate 相同的方式传递名称,它就会从您的项目中删除:

                            rails generate scaffold posts title:string content:text
                            rails destroy scaffold posts title:string content:text
                            

                            【讨论】:

                              【解决方案18】:

                              要生成脚手架:

                              rails generate scaffold abc
                              

                              要恢复这个脚手架:

                              rails destroy scaffold abc
                              

                              如果您已经为它运行迁移,只需回滚

                              rake db:rollback STEP=1
                              

                              【讨论】:

                                【解决方案19】:

                                提供另一种基于git的解决方案

                                开始一个新项目

                                rails new project_name
                                cd project_name
                                

                                初始化 git

                                git init
                                git commit -m "initial commit"
                                

                                创建一个脚手架

                                rails g scaffold MyScaffold
                                rake db:migrate
                                

                                回滚脚手架

                                rake db:rollback
                                git reset --hard
                                git clean -f -d
                                

                                【讨论】:

                                  【解决方案20】:

                                  rails [选项] 脚手架脚手架名称

                                  选项

                                  g    generate
                                  d    destroy
                                  

                                  如果你这样做

                                  rails g  scaffold myFoo
                                  

                                  然后使用反转它

                                  rails d scaffold MyFoo
                                  

                                  【讨论】:

                                    【解决方案21】:

                                    当我们生成脚手架时,会创建以下文件:

                                    命令:rails generate scaffold Game

                                    创建的文件:

                                    >       invoke  active_record
                                    >       create    db/migrate/20160905064128_create_games.rb
                                    >       create    app/models/game.rb
                                    >       invoke    test_unit
                                    >       create      test/models/game_test.rb
                                    >       create      test/fixtures/games.yml
                                    >       invoke  resource_route
                                    >        route    resources :games
                                    >       invoke  inherited_resources_controller
                                    >       create    app/controllers/games_controller.rb
                                    >       invoke    erb
                                    >       create      app/views/games
                                    >       create      app/views/games/index.html.erb
                                    >       create      app/views/games/edit.html.erb
                                    >       create      app/views/games/show.html.erb
                                    >       create      app/views/games/new.html.erb
                                    >       create      app/views/games/_form.html.erb
                                    >       invoke    test_unit
                                    >       create      test/controllers/games_controller_test.rb
                                    >       invoke    helper
                                    >       create      app/helpers/games_helper.rb
                                    >       invoke      test_unit
                                    >       create        test/helpers/games_helper_test.rb
                                    >       invoke    jbuilder
                                    >       create      app/views/games/index.json.jbuilder
                                    >       create      app/views/games/show.json.jbuilder
                                    >       invoke  assets
                                    >       invoke    coffee
                                    >       create      app/assets/javascripts/games.js.coffee
                                    >       invoke    scss
                                    >       create      app/assets/stylesheets/games.css.scss
                                    >       invoke  scss
                                    >       create    app/assets/stylesheets/scaffolds.css.scss
                                    

                                    如果我们在此之后运行了迁移,那么我们必须先回滚迁移,因为删除脚手架也会删除迁移文件,我们将无法恢复该迁移。

                                    如果我们已经运行了迁移:

                                    rake db:rollback
                                    

                                    之后我们可以通过这个逗号安全地移除脚手架。

                                    rails d scaffold Game
                                    

                                    此命令将删除项目中脚手架创建的所有文件。

                                    【讨论】:

                                      【解决方案22】:

                                      任何时候你运行rails g,你都可以通过运行rails d(销毁)来删除你生成的东西。如果您已经运行rake db:migrate,则需要在销毁之前运行rake db:rollback :)

                                      【讨论】:

                                        【解决方案23】:

                                        案例1:如果只运行这个命令生成脚手架-

                                        rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE
                                        
                                        Ex - rails generate scaffold User name:string address:text
                                        

                                        但到目前为止,您还没有运行任何迁移命令,例如

                                        rake db:migrate
                                        

                                        那么你应该只需要运行这个命令,比如 -

                                        rails destroy scaffold User name:string address:text
                                        

                                        案例 2: 如果您已经通过以下命令运行(脚手架和迁移) -

                                        rails generate scaffold User name:string address:text
                                        
                                        rake db:migrate 
                                        

                                        那么你应该需要先运行回滚迁移命令,然后像下面这样销毁脚手架 -

                                        rake db:rollback
                                        
                                        rails destroy scaffold User name:string address:text
                                        

                                        所以通过这种方式,我们可以撤消脚手架。我们也可以使用 d 表示 destroyg 表示 generate 作为快捷方式。

                                        【讨论】:

                                          【解决方案24】:
                                          rails g scaffold MyFoo 
                                          

                                          用于生成和

                                          rails d scaffold MyFoo
                                          

                                          删除

                                          【讨论】:

                                          • 属性就不用说了,对吗?谢谢
                                          猜你喜欢
                                          • 2015-11-28
                                          • 2011-12-20
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 2011-06-19
                                          • 1970-01-01
                                          • 2011-02-21
                                          • 2016-05-21
                                          • 1970-01-01
                                          相关资源
                                          最近更新 更多