db/seed.rb
파일을 편집하고 rake db:seed
명령을 실행하여 테이블에 데이터 행을 시드했습니다. 무의식적으로, 나는 잘못된 정보를 그 줄에 넣었다. 그래서 이전에 추가 된 데이터 행을 제거하고 싶습니다. 의 rake db:rollback
과 같은 레이크 명령이 있습니까?이전에 레일에 시드 된 데이터의 실행 취소
1 :
db/seed.rb
파일을 편집하고 rake db:seed
명령을 실행하여 테이블에 데이터 행을 시드했습니다. 무의식적으로, 나는 잘못된 정보를 그 줄에 넣었다. 그래서 이전에 추가 된 데이터 행을 제거하고 싶습니다. 의 rake db:rollback
과 같은 레이크 명령이 있습니까?이전에 레일에 시드 된 데이터의 실행 취소
1 :
는이에 측면의 몇 가지가 있습니다
당신은 단순히 씨앗을 업데이트 한 후 rake db:seed
을 다시 실행한다 : 다른 데이터가 데이터베이스에 없을 때 당신은 씨앗 데이터를 변경하려면 .rb 파일. 해당 모델에 아무 것도 추가하기 전에 MyModel.delete_all
이 있는지 확인하십시오.
2 : 당신은 씨앗 데이터를 변경하기를 원하지만이 조금 어렵 데이터베이스
에 추가 된 다른 데이터가있다. 여기 자주 할 수있는 간단한 일이 수동으로 원시 SQL 명령문 중 하나를 사용하여 데이터를 변경하거나 PhpPpAdmin 같은 도구의 사용, PhpMyAdmin 등 지금
로하는 것입니다, possiby에게 함께이 해킹 한 가지 방법이있다 , 그리고 그것은 seed.rb 파일에서 몇 가지 부두를하는 것입니다.
if ENV['deseed']
#Do your deseeding action here
else
#Do your seeding here.
end
당신도 진짜 미친 얻을 수와 같은 것을 수행 : 그래서 당신은 당신의 seed.rb에, rake db:seed deseed=true
를 실행할 수
deseed = ENV['desee']
#DANGER: Dirty hacks upcoming:
deseed? myModelCall = MyModel.method(:destroy_all): myModelCall = MyModel.method(:create)
myModelCall.call :user_id_or_whatevs => 23 #this creates or deletes a MyModel entity with the given parameters
#NOTE this might not work in all cases and I would not necessarily recommend doing this.
#<3uby
드롭 데이터베이스를 다시하고 다시 씨앗. :) –
@Sergio Tulentsev : 동의합니다. 그러나 나는 마지막 시드를하기 전에 이미 있던 데이터를 보관해야합니다. 마지막으로 시드 된 데이터 만 제거하려고합니다. 그 일을 도와 주실 수 있습니까? –
그것에 대한 레이크 작업이 없습니다. 데이터를 수동으로 찾아서 삭제하십시오. 다시 일어날 것으로 예상되면 스크립트를 작성하십시오. –