我们最近升级了我们的铁路应用程序,从3.0.3版本升级到3.1.0版本。 应用程序与以前一样, 大部分运行成功, 但有一个重大例外。 我们在两个模型( SurveyDatum 和 子组)之间存在许多对许多的关系, 通过一个名为子组SUveiveDatum 的模型加入。 以下是每个模型的代码 :
class SurveyDatum < ActiveRecord::Base
has_many :sub_group_survey_data
has_many :sub_groups, :through => :sub_group_survey_data
end
class SubGroup < ActiveRecord::Base
has_many :sub_group_survey_data
has_many :survey_data, :through => :sub_group_survey_data
end
正如你所期待的:
class SubGroupSurveyDatum < ActiveRecord::Base
belongs_to :survey_datum
belongs_to :sub_group
end
如果有我先前从数据库中检索到的 SurveyDatum 对象( 叫做 sd ), 并且我使用子组方法( sd. sub_ groups), 这是通过主动记录生成的 Sql 查询结果 :
SELECT `sub_groups`.* FROM `sub_groups` INNER JOIN `sub_group_survey_data` ON `sub_groups`.`id` = `sub_group_survey_data`.`sub_group_id` WHERE `sub_group_survey_data`.`survey_datum_id` IS NULL
“ IS NULL” 部分显然是我的勘测数据对象的代号应该去的地方, 不管主动记录没有使用它。 该对象确实有一个代号, 因为如前所述, 它一直存在, 并从数据库中检索。 这个问题只是在我们搬到铁路3.1 之后才出现, 所以我假设有些事情我没有按照新版本做正确, 但我不知道。 任何想法吗? 感谢您的帮助!