在 Rails 中撤消脚手架
Posted
技术标签:
【中文标题】在 Rails 中撤消脚手架【英文标题】:Undo scaffolding in Rails 【发布时间】:2010-11-01 02:17:30 【问题描述】:有什么方法可以“撤消”Rails 中脚手架命令的效果吗?
【问题讨论】:
【参考方案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 g
和rails d
。【参考方案11】:
你也需要在销毁脚手架后回滚迁移
rails destroy scaffold 'scaffoldname'
rake db:rollback
【讨论】:
【参考方案12】:所以,你应该按照流程来撤消rails 4中的脚手架。运行命令如下:
rails d scaffold FooBar
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 表示 destroy 和 g 表示 generate 作为快捷方式。
【讨论】:
【参考方案24】:rails g scaffold MyFoo
用于生成和
rails d scaffold MyFoo
删除
【讨论】:
属性就不用说了,对吗?谢谢以上是关于在 Rails 中撤消脚手架的主要内容,如果未能解决你的问题,请参考以下文章