0

设置迁移类名称,与模型类名称相同,不会在开发环境中引发错误,而是在部署到生产期间,它会引发superclass mismatch.

经过大量研究,我认为这可能是因为“延迟加载”,即为开发中的每个请求重新加载类。它是正确的还是完全有其他原因。

来自 capistrano 的错误消息

类 SimilarityMatrixInSubjects 的超类不匹配

代码片段

db/migrate/20130915125533_similarity_matrix_in_subjects.rb

class SimilarityMatrixInSubjects < ActiveRecord::Migration
  def change
    create_table :similarity_matrix_in_subjects do |t|
      t.integer :subject_one_id
      t.integer :subject_two_id
      t.integer :similarity_score
      t.timestamps
    end
  end
end

什么修复了这个错误

https://github.com/shashanksingh/face_rec_server/blob/master/db/migrate/20130915125533_create_similarity_matrix_in_subjects.rb

4

1 回答 1

1

superclass mismatch for class SimilarityMatrixInSubjects错误可能意味着您的代码库中已经有该类,或者至少由于某种原因您的环境中有它。当您尝试重新打开类时,会发生这种情况,将其从与之前子类化的类不同的类中子类化。这就是重命名迁移类有帮助的原因。

两件事情:

  • 我可以看到您创建了similarity_matrix_in_subjects 表。也许,你有相应的 AR 模型?如果是这样,问题就很明显了。
  • 如果没有,请尝试SimilarityMatrixInSubjects.ancestors在迁移中的类签名之前输出 - 您将看到它之前的子类。

希望有帮助!

于 2013-10-22T08:43:31.560 回答