有没有办法在Rails中“撤销”脚手架命令的效果?
第一个,如果你已经运行了由scaffold命令生成的迁移,你必须先执行回滚。
scaffold
rake db:rollback
你可以使用以下方法创建脚手架:
rails generate scaffold MyFoo
(或类似),并使用你可以销毁/撤销
rails destroy scaffold MyFoo
这将删除由generate创建的所有文件,但不会删除您手动进行的任何其他更改。
generate
如果您只想查看生成器将创建的文件,您可以传递generator -pretend或-p选项。
Rishav Rastogi是对的,rails 3.0或更高版本:
rails generate scaffold ...
rails destroy scaffold ...
你可以撤销你所做的一切
rails generate xxx
通过
rails destroy xxx
例如,它将生成器应用于迁移、脚手架、模型等
最好的方法是:
destroy rake db: rake db:rollback
支架:
rails destroy scaffold Name_of_script
第一次,你可以检查你的数据库迁移,如果你有生成脚手架。 您必须销毁它们以清理数据库
然后
rails d scaffold
rails d scaffold <scaffoldname>
此外,请确保通过回滚或到特定版本撤销了迁移。
要生成脚手架:
rails generate scaffold xyz
恢复脚手架:
rails destroy scaffold xyz
您需要首先执行rake db:rollback(如果有的话)来回滚迁移 然后通过
rails d scaffold foo
你也需要在摧毁脚手架后回滚迁移
rails destroy scaffold 'scaffoldname' rake db:rollback
用于在轨道中生成脚手架
rails generate scaffold MODEL_GOES_HERE
用于在轨道上撤消脚手架-
rails destroy scaffold MODEL_GOES_HERE
因此,您应该遵循Process来撤销rails 4中的脚手架。执行如下命令:
rails d scaffold FooBar
就是这样!
干杯!
Rails销毁名称
使用这个
rails d scaffold MODEL_NAME rake db:rollback
导轨d脚手架
建议回退首先,键入您的终端。
添加破坏脚手架(“d”代表“destroy”)
rails d scaffold name_of_scaffold
享受你的代码。
当我们生成脚手架时,会创建以下文件:
命令:rails generate scaffold Game
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
如果我们在此之后运行了迁移,那么我们必须首先回滚迁移,因为删除脚手架也会删除迁移文件,我们将无法恢复迁移。
如果我们已经运行了迁移:
在此之后,我们可以通过这个命令安全地移除脚手架。
rails d scaffold Game
该命令将删除项目中由脚手架创建的所有文件。
任何时候你运行rails g,你都可以通过运行rails d (destroy)来删除你所生成的东西来反转它。如果你已经运行了rake db:migrate,你将需要在销毁之前运行rake db:rollback:)
rails g
rails d
rake db:migrate
是的,scaffold本身和所有合并它的东西。
destroy命令与generate相反,它将撤销其中一个命令。只需要像generate一样传递它的名字,它就会从你的项目中删除:
destroy
rails generate scaffold posts title:string content:text rails destroy scaffold posts title:string content:text
案例1:如果你只运行这个命令来生成脚手架-
rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE Ex - rails generate scaffold User name:string address:text
但到目前为止,您还没有运行任何命令进行迁移
那么您应该只需要运行这个命令,比如-
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代替摧毁,用g代替生成。
rails generate scaffold abc
rails destroy scaffold abc
如果您已经为它运行了迁移,只需回滚即可
rake db:rollback STEP=1
rails g scaffold MyFoo
用于生成和
rails d scaffold MyFoo
为消除
提供了另一种基于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
Rails [option] scaffold脚手架名称
选项
g generate d destroy
如果有的话
rails g scaffold myFoo
然后反向使用
生成:
rails g scaffold post rake db:migrate
删除:
rake db:rollback rails d scaffold post