有什么方法可以“撤消”Rails 中脚手架命令的效果?
24 回答
首先,如果您已经运行了scaffold
命令生成的迁移,则必须先执行回滚。
rake db:rollback
您可以使用以下方法创建脚手架:
rails generate scaffold MyFoo
(或类似的),您可以使用销毁/撤消它
rails destroy scaffold MyFoo
这将删除由 创建的所有文件generate
,但不会删除您可能手动进行的任何其他更改。
Rishav Rastogi 是对的,并且使用 rails 3.0 或更高版本:
rails 生成脚手架 ...
铁轨破坏脚手架...
您可以撤消您所做的任何事情
rails generate xxx
经过
rails destroy xxx
例如,这将生成器应用于迁移、脚手架、模型...等
如果您只想查看生成器将创建的文件,您可以传递生成器 --pretend 或 -p 选项。
最好的方法是:
destroy rake db: rake db:rollback
对于脚手架:
rails destroy scaffold Name_of_script
第一次,如果你有生成脚手架,你可以检查你的数据库迁移。你必须销毁它们来清理你的数据库
rake db:rollback
然后
rails d scaffold
rails d scaffold <scaffoldname>
此外,请确保撤消通过回滚或到特定版本所做的迁移。
生成脚手架:
rails generate scaffold xyz
要恢复脚手架:
rails destroy scaffold xyz
Rails 破坏名称
rake db:rollback
用于在铁轨中生成脚手架 -
rails generate scaffold MODEL_GOES_HERE
用于撤消导轨中的脚手架 -
rails destroy scaffold MODEL_GOES_HERE
在销毁脚手架后,您也需要回滚迁移
rails destroy scaffold 'scaffoldname'
rake db:rollback
因此,您应该按照流程撤消rails 4中的脚手架。运行命令如下:
rails d scaffold FooBar
rake db:rollback
rake db:migrate
如果你在创建上面的脚手架之后_had_run_ ?
而已!
干杯!
推荐回滚首先,输入你的终端。
rake db:rollback
添加销毁脚手架(“d”代表“销毁”)
rails d scaffold name_of_scaffold
享受您的代码。
用这个
rails d scaffold MODEL_NAME
rake db:rollback
您需要先通过执行 rake db:rollback if any 来回滚迁移,然后通过以下方式销毁脚手架
rails d scaffold foo
rails [option] scaffold scaffold_name
Option
g generate
d destroy
If you do
rails g scaffold myFoo
Then reverse it back using
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 generate scaffold abc
要还原此脚手架:
rails destroy scaffold abc
如果您已为其运行迁移,则只需回滚
rake db:rollback STEP=1
首先,
如果您已经运行rake db:migrate ,则必须执行rake db:rollback来销毁表,然后您可以运行
rails d 脚手架型号
是的,它scaffold
本身和所有合并它的东西。
该destroy
命令是相反的generate
,将撤消一个。只需以相同的方式传递它的名称generate
,它就会从您的项目中删除:
rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text
rails g scaffold MyFoo
用于生成和
rails d scaffold MyFoo
用于去除
当我们生成脚手架时,将创建以下文件:
命令: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
此命令将删除项目中脚手架创建的所有文件。
案例一:如果只运行这个命令生成脚手架——
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来销毁,使用g来生成作为快捷方式。
任何时候你运行rails g
,你都可以通过运行rails d
(destroy) 来移除你生成的东西。如果您已经运行rake db:migrate
,则需要rake db:rollback
在销毁之前运行 :)