2017-09-04 3 views
0

에서 실행되지 않습니다. 는 그럼 난 내 생산 ENV에서 그것을 실행,하지만이 실패레일 마이그레이션 내가 레일 마이그레이션 일부 데이터를 변환하고 자극

[email protected]:~/pt_api $ RAILS_ENV="production" rake db:migrate 
I, [2017-09-04T07:11:51.315838 #29058] INFO -- : Migrating to MigrateInstancesToFacets (20170831110928) 
== 20170831110928 MigrateInstancesToFacets: migrating ========================= 
-- Found 25671 records to migrate 
-- Migrating instances... 
rake aborted! 
StandardError: An error has occurred, all later migrations canceled: 

uninitialized constant Instance::Catalog 
/home/pi/pt_api/db/migrate/20170831110928_migrate_instances_to_facets.rb:9:in `block (2 levels) in change' 
/home/pi/pt_api/db/migrate/20170831110928_migrate_instances_to_facets.rb:8:in `block in change' 
/home/pi/pt_api/db/migrate/20170831110928_migrate_instances_to_facets.rb:5:in `change' 
NameError: uninitialized constant Instance::Catalog 
/home/pi/pt_api/db/migrate/20170831110928_migrate_instances_to_facets.rb:9:in `block (2 levels) in change' 
/home/pi/pt_api/db/migrate/20170831110928_migrate_instances_to_facets.rb:8:in `block in change' 
/home/pi/pt_api/db/migrate/20170831110928_migrate_instances_to_facets.rb:5:in `change' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

이 인스턴스에 카탈로그를 액세스 할 수 없음을 말하고있다. 나는 콘솔을 열었고 같은 코드를 실행했다. 모두 좋다. 마이그레이션 할 때 환경을로드하지 않습니까?

--- 편집 --- 인스턴스 모델 :

class Instance < ActiveRecord::Base 
    belongs_to :catalog 
    belongs_to :photo 
    before_destroy :delete_photo 

    def delete_photo 
    catalog = Catalog.find self.catalog_id 
    catalog.delete_photo(self.photo_id) 
    end 

end 
+0

로를 만들 마이그레이션 코드를 업데이트하는 시도 할 수 있습니다 그대로 instence를 전달 번들 exec rake db를 사용하여 시도 : migrate? –

+0

제안 해 주셔서 감사합니다.하지만 불행히도 아무 것도 바뀌지 않았습니다 ... – martin

+0

여기서 중요한 문제 중 하나는'.create'를 실행하고 리턴 값을 검사하여 레코드가 저장되었는지 아닌지를 확인하는 것입니다. – max

답변

1

대신 당신은 _id

CatalogFacet.create(
    ... 
    catalog_id: instance.catalog_id, 
    ... 
) 
+0

그게 좀 더 나을거야 ... 이제 오류가 온다 인스턴스를 더 내려 업데이트하려고합니다 – martin

+0

그 로그를 게시 할 수 있습니까? –

+0

'delete_photo' 메쏘드의 한가지는'catalog = Catalog.find self.catalog_id'''belgons_to' 연관을 통해 모델 –