2017-09-04 6 views
0

に実行されません。 は、その後、私は私の生産ENVでそれを実行しましたが、これは失敗します。Railsの移行は、私はレールの移行で一部のデータを変換していますPROD

[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) 

それはインスタンス上のカタログにアクセスすることができないと言っています。私はコンソールを開き、そこに同じコードを実行して、それはすべて良いです。 マイグレーション中に環境をロードしていませんか?

--- EDIT --- インスタンスモデル:

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

大きな問題の1つは、 '.create'を実行していて、戻り値をチェックしてレコードが保存されたかどうかを確認することではありません。 – max

答えて

1

代わりに、それはあなたが_id

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

これでもう少し手に入りました...エラーが発生しました。インスタンスをさらに更新してみます – martin

+0

失敗したログを投稿できますか? –

+0

'delete_photo'メソッドの1つのことは、' catalog = Catalog.find self.catalog_id'という '' belgons_to'の最初の行がなければ自動的にモデル –

関連する問題