有没有办法在Rails中“撤消”脚手架命令的效果?
答案 0 :(得分:756)
首先,如果您已经运行了scaffold
命令生成的迁移,则必须先执行回滚。
rake db:rollback
您可以使用以下方法创建脚手架:
rails generate scaffold MyFoo
(或类似),可以使用
销毁/撤消rails destroy scaffold MyFoo
这将删除generate
创建的所有文件,但不会删除您手动进行的任何其他更改。
答案 1 :(得分:167)
Rishav Rastogi是对的,使用rails 3.0或更高版本:
rails generate scaffold ...
rails destroy scaffold ...
答案 2 :(得分:40)
你可以撤消你用
做的任何事情rails generate xxx
通过
rails destroy xxx
例如,这会将生成器应用于迁移,脚手架,模型......等等。
答案 3 :(得分:13)
如果您只想查看生成器将创建的文件,您可以传递生成器--pretend或-p选项。
答案 4 :(得分:10)
最好的方法是:
destroy rake db: rake db:rollback
对于脚手架:
rails destroy scaffold Name_of_script
答案 5 :(得分:8)
第一次,如果您已生成脚手架,则可以检查数据库迁移。 你必须销毁它们来清理你的数据库
rake db:rollback
然后
rails d scaffold
答案 6 :(得分:8)
rails d scaffold <scaffoldname>
此外,请确保撤消通过回滚或特定版本进行的迁移。
答案 7 :(得分:4)
Rails销毁名称
rake db:rollback
答案 8 :(得分:4)
生成脚手架:
rails generate scaffold xyz
要恢复脚手架:
rails destroy scaffold xyz
答案 9 :(得分:3)
用于在铁轨中生成脚手架 -
rails destroy scaffold MODEL_GOES_HERE
对于rails中的撤消脚手架 -
DEFINE TEMP-TABLE ttservice NO-UNDO
FIELD ad-num AS CHARACTER /* you have a "num" field defined as character? that's misleading */
INDEX ttprimary AS UNIQUE ad-num .
for each vehicle no-lock: /* perhaps ad-num is non-unique in the vehicle table? */
find ttservice where ttservice.ad-num = vehicles.ad-num no-error.
if available ttservice then
do:
message "oops!". /* or whatever it is you want when a duplicate occurs... */
end.
else
do:
create ttservice.
ASSIGN ttservice.ad-num = vehicles.ad-num.
end.
end.
答案 10 :(得分:2)
你也需要在销毁脚手架后回滚迁移
rails destroy scaffold 'scaffoldname'
rake db:rollback
答案 11 :(得分:2)
因此,您应该按照以下步骤撤消rails中的scaffolding 4.运行Command如下:
rails d scaffold FooBar
rake db:rollback
如果你在创建上述脚手架后__had_run _ rake db:migrate
?那就是它!
干杯!
答案 12 :(得分:2)
推荐回滚首先,输入您的终端。
rake db:rollback
添加破坏脚手架(&#39; d&#39;代表&#39;销毁&#39;)
rails d scaffold name_of_scaffold
享受您的代码。
答案 13 :(得分:1)
首先需要通过执行rake db:rollback来回滚迁移(如果有的话) 然后通过
摧毁脚手架rails d scaffold foo
答案 14 :(得分:1)
使用此
rails d scaffold MODEL_NAME
rake db:rollback
答案 15 :(得分:1)
首先,您必须执行 rake db:rollback 以销毁表格 如果您已经运行 rake db:migrate ,那么您可以运行
rails d scaffold模型
答案 16 :(得分:1)
是的,// source: https://github.com/jserz/domPlus/blob/master/src/insertAfter()/insertAfter.js
Node.prototype.insertAfter = Node.prototype.insertAfter || function (newNode, referenceNode) {
function isNode(node) {
return node instanceof Node;
}
if(arguments.length < 2){
throw(new TypeError("Failed to execute 'insertAfter' on 'Node': 2 arguments required, but only "+ arguments.length +" present."));
}
if(isNode(newNode)){
if(referenceNode === null || referenceNode === undefined){
return this.insertBefore(newNode, referenceNode);
}
if(isNode(referenceNode)){
return this.insertBefore(newNode, referenceNode.nextSibling);
}
throw(new TypeError("Failed to execute 'insertAfter' on 'Node': parameter 2 is not of type 'Node'."));
}
throw(new TypeError("Failed to execute 'insertAfter' on 'Node': parameter 1 is not of type 'Node'."));
本身以及合并它的所有内容。
scaffold
命令与destroy
相反,将撤消一个命令。只需将名称与generate
一样传递给它,然后从项目中删除它:
generate
答案 17 :(得分:1)
生成脚手架:
rails generate scaffold abc
要还原此脚手架:
rails destroy scaffold abc
如果您已为其运行迁移,则只需回滚
rake db:rollback STEP=1
答案 18 :(得分: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
答案 19 :(得分:1)
rails [option] scaffold scaffold_name
选项
g generate
d destroy
如果你这样做
rails g scaffold myFoo
然后使用
将其反转rails d scaffold MyFoo
答案 20 :(得分:0)
当我们生成脚手架时,将创建以下文件:
命令: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
如果我们在此之后运行迁移,那么我们必须首先回滚迁移,因为删除scaffold也将删除迁移文件,我们将无法恢复迁移。
我们已经进行了迁移:
rake db:rollback
在此之后我们可以安全地通过这个commad移除脚手架。
rails d scaffold Game
此命令将删除项目中脚手架创建的所有文件。
答案 21 :(得分:0)
任何时候运行rails g
,您都可以通过运行rails d
(销毁)来撤消它,以删除您生成的内容。如果您已经运行rake db:migrate
,则需要在销毁之前运行rake db:rollback
:)
答案 22 :(得分:0)
案例1:如果只运行此命令来生成脚手架 -
rake db:migrate
但到目前为止,您没有像
那样运行任何迁移命令rails destroy scaffold User name:string address:text
那么你应该只需要运行这个命令,如 -
rails generate scaffold User name:string address:text
rake db:migrate
案例2:如果您已经通过以下命令运行(脚手架和迁移),例如 -
rake db:rollback
rails destroy scaffold User name:string address:text
然后你应该运行第一个rollback migration命令然后像下面那样破坏scaffold -
var fdata = new FormData();
var myform = $('#prfform'); // specify the form element
var idata = myform.serializeArray();
var document = $('input[type="file"]')[0].files[0];
fdata.append('document[]', document);
$.each(idata,function(key,input){
fdata.append(input.name,input.value);
});
$.ajax({
url:"process.php",
type: "POST",
data: fdata,
processData: false,
contentType: false,
beforeSend: function() {
//something before send
},
success:function(data) {
//something after response
}
});
<form name="prfform" id="prfform" method="post" enctype="multipart/form-data">
<!-- elements -->
</form>
所以以这种方式,我们可以撤消脚手架。此外,我们可以将 d 用于销售,生成用生成作为快捷方式。
答案 23 :(得分:0)
rails g scaffold MyFoo
用于生成和
rails d scaffold MyFoo
删除