現在、データの移行や問題が発生しています。 私はマイグレーションファイルにこれを持っています。Rails 5でマイグレーションのモデルが定義されていない
class DropTutorProfileTable < ActiveRecord::Migration[5.1]
class Subject < ActiveRecord::Base
has_and_belongs_to_many :tutor_accounts
end
class TutorAccount < ActiveRecord::Base
has_and_belongs_to_many :subjects
end
def change
send_data_to_subject_tutor_account
drop_table :tutor_profiles
end
private
def send_data_to_subject_tutor_account
TutorProfile.all.find_each do |tutor_profile|
# data migration code here
tutor_account.subjects << subject
end
end
end
この移行を実行すると、次のエラーが発生します。
StandardError: An error has occurred, this and all later migrations canceled:
Subject(#70181814234340) expected, got #<DropTutorProfileTable::Subject id: 3, name: "Writing", academic_type: "academic"> which is an instance of DropTutorProfileTable::Subject(#70181808133400)
私はこの問題を初めて処理しています。私はマイグレーション時にモデルを定義し、問題はない他のマイグレーションを行ってきました。興味深いことに、ときI出力TutorAccount
インスタンスのクラスとSubject
インスタンスのクラス、私はここで何が起こっているか見当がつかない...
TutorAccount
DropTutorProfileTable::Subject
を取得します。あなたの助けが大変ありがとう!
'TutorAccount'というクラスがプロジェクト内の別の場所では定義されていないが、ネストされていないクラスを再確認できますか? – Shiko
'tutor_profile'の科目を' tutor_account'に割り当てようとしていますか? 「面白い」であるあなたの最後の質問に>あなたはこの移行中に 'Subject'クラスを定義しているので、それは実際には' – inveterateliterate
をDropTutorProfileTable'で名前空間されるだろう。また、私は明示的にTutorProfileSubject' 'のようなテーブルを結合作成するのではなく頼って推薦します'has_and_belongs_to_many'にあります。なぜそれが推奨されるアプローチなのか、いくつかの素晴らしい例があります。 – inveterateliterate