有没有办法在Rails中“撤销”脚手架命令的效果?
首先,如果您已经运行了由scaffold命令生成的迁移,那么您必须首先执行回滚。
rake db:rollback
你可以使用以下方法创建脚手架:
rails generate scaffold MyFoo
(或类似),并且您可以使用
rails destroy scaffold MyFoo
这将删除generate创建的所有文件,但不会删除手动进行的任何其他更改。
Rishav Rastogi是对的,rails 3.0或更高版本:
rails generate scaffold ...
rails destroy scaffold ...
最好的方法是:
destroy rake db: rake db:rollback
支架:
rails destroy scaffold Name_of_script
如果您有generate scaffold,您可以第一次检查数据库迁移。 您必须销毁它们以清理数据库
rake db:rollback
then
rails d scaffold
用于在轨道中生成脚手架
rails generate scaffold MODEL_GOES_HERE
用于在轨道上撤消脚手架-
rails destroy scaffold MODEL_GOES_HERE
因此,您应该遵循Process来撤销rails 4中的脚手架。执行如下命令:
栏杆脚手架FooBar 耙db:如果你_had_run_rake db:迁移后创建以上的脚手架回滚?
就是这样!
干杯!
建议回退首先,键入您的终端。
rake db:rollback
添加破坏脚手架(“d”代表“destroy”)
rails d scaffold name_of_scaffold
享受你的代码。
当我们生成脚手架时,会创建以下文件:
命令:rails生成脚手架游戏
创建的文件:
> 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 g,都可以通过运行rails d (destroy)来删除生成的内容。如果你已经运行rake db:migrate,你需要在销毁之前运行rake db:rollback:)
是的,刑台本身和它上面的所有东西。
destroy命令与generate相反,它将撤销一个命令。只需要像generate一样传递它的名字,它就会从你的项目中删除:
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
但到目前为止,您还没有运行任何命令进行迁移
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 generate scaffold abc
恢复脚手架:
rails destroy scaffold abc
如果您已经为它运行了迁移,只需回滚即可
rake db:rollback STEP=1
提供了另一种基于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 d scaffold MyFoo
生成:
rails g scaffold post
rake db:migrate
删除:
rake db:rollback
rails d scaffold post
推荐文章
- 我如何在Ruby中解析YAML文件?
- 指定创建新应用程序时要使用的rails版本
- 确定ActiveRecord对象是否为New
- Rails中的OO设计:在哪里放置东西
- 如何在Heroku上重新启动rails服务器?
- respond_to块如何工作?
- 给定一个类,查看实例是否有方法(Ruby)
- rails局部模板中的可选局部变量:如何退出(defined?foo)混乱?
- 在日历应用程序中建模重复事件的最佳方法是什么?
- Ruby Bundle Symbol not found: _SSLv2_client_method (LoadError)
- 如何创建一个私有类方法?
- rails耙任务是否提供对ActiveRecord模型的访问?
- 无法安装pg gem
- 双* (splat)操作符做什么
- 如何使用Ruby on Rails进行HTTP请求?