设置迁移类名称与模型类名称相同不会在开发环境中引发错误,而是在部署到生产期间,它会引发superclass mismatch
。
经过大量研究后,我想,可能是因为“ Lazy load ”,即为开发中的每个请求重新加载类。这是正确的还是完全没有其他原因。
来自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
修复错误的原因
答案 0 :(得分:1)
superclass mismatch for class SimilarityMatrixInSubjects
错误可能意味着您已经在代码库中拥有该类,或者至少您出于某种原因在您的环境中拥有该类。
当您尝试重新打开该类时会发生这种情况,从类中继承它,该类与之前的子类不同。
这就是为什么重命名迁移类会有所帮助。
两件事:
SimilarityMatrixInSubjects.ancestors
- 您将看到它之前的子类。希望有所帮助!