Rails에서 비계 명령의 효과를 '실행 취소'할 수있는 방법이 있습니까?
Rails에서 비계 명령의 효과를 '실행 취소'할 수있는 방법이 있습니까?
답변:
먼저 , scaffold
명령으로 생성 된 마이그레이션을 이미 실행 한 경우 먼저 롤백을 수행해야합니다.
rake db:rollback
다음을 사용하여 스캐 폴딩을 만들 수 있습니다.
rails generate scaffold MyFoo
(또는 유사한), 당신은 그것을 사용하여 그것을 파괴 / 취소 할 수 있습니다
rails destroy scaffold MyFoo
이 파일은에 의해 생성 된 모든 파일을 삭제 generate
하지만 수동으로 추가 한 변경 사항은 없습니다.
rake db:rollback
비계를 파괴하기 전에 잊지 마십시오. 스캐 폴드 이전의 마이그레이션 외에 다른 마이그레이션이없는 경우 테이블이 삭제 / 삭제됩니다.
git status
및 / 또는 git diff
)를 확인하십시오.
Rishav Rastogi가 옳고 레일 3.0 이상인 경우 :
레일은 비계를 생성합니다 ...
레일은 비계를 파괴 ...
rake db:rollback
이전 에 실행 중이 rails destroy scaffold
거나 마지막으로 실행 된 것이 아닌 경우 db:migrate:down VERSION=20080906120000
db / migrate에서 이름 앞에있는 번호를 찾을 수 있습니다.
당신이 한 모든 것을 취소 할 수 있습니다
rails generate xxx
으로
rails destroy xxx
예를 들어 이것은 생성기를 마이그레이션, 발판, 모델 등에 적용합니다.
레일에서 비계를 생성하는 경우-
rails generate scaffold MODEL_GOES_HERE
레일의 비계를 취소하려면-
rails destroy scaffold MODEL_GOES_HERE
rails g
및 rails d
.
따라서 레일에서 스캐 폴딩을 취소하기 위해 따라야하는 프로세스 4. 다음과 같이 명령을 실행하십시오.
rails d scaffold FooBar
rake db:rollback
rake db:migrate
위의 스캐 폴드를 생성 한 후 you_had_run_이라면 ?그게 다야!
건배!
그렇습니다. 그 scaffold
자체와 그것을 합병시키는 모든 것.
이 destroy
명령은 정반대이며 generate
실행 취소합니다. 같은 방식으로 이름을 전달하면 generate
프로젝트에서 제거됩니다.
rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text
스캐 폴드를 생성하면 다음과 같은 파일이 생성됩니다.
명령: 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
이 명령은 프로젝트의 스캐 폴드에 의해 생성 된 모든 파일을 제거합니다.
사례 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 : 이미 다음과 같은 명령으로 (Scaffold and Migration)을 실행 한 경우-
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 scaffold MyFoo
생성 및
rails d scaffold MyFoo
제거