我有原型模型
class ArchMagazine::Prototype < ActiveRecord::Base
self.table_name = 'arch_magazine_prototypes'
has_many :custom_dictionaries, through: :dictionaries_prototypes, source: :custom_dictionary, foreign_key: :custom_dictionary_id
has_many :dictionaries_prototypes, -> { where(kind: 'normal') }, dependent: :destroy, class_name: 'ArchMagazine::DictionariesPrototype'
end
和服务
class ArchMagazine::UpdatePrototype < ArchMagazine::PrototypeCore
def process
if prototype_form.valid?
prototype.update(prototype_form.prototype_attrs)
add_custom_dictionaries(prototype, true)
else
raise ValidationError.new
end
end
def add_custom_dictionaries(prototype, with_destroy = false)
prototype.custom_dictionaries.destroy_all if with_destroy
prototype_form.custom_dictionary_ids.present? and prototype_form.custom_dictionary_ids.each do |dictionary_id|
create_record(prototype, dictionary_id, 'normal')
end
end
end
当我尝试使用一些新的custom_dictionaries_ids更新原型对象(创建工作正常)时,应用程序失败
prototype.custom_dictionaries.destroy_all if with_destroy
错误链接(不完全是我的,但同样的active_record错误):http://pastebin.com/TZugtfrd
有趣的是,我的示例中的代码可以很好地处理开发。 生产是问题所在。一段时间之前,开发将在 ruby 2.0.0-p195 , rails 4.0.4 上运行,一切都很好。然后我将生产上的 ruby 版本更新为 2.3 ,应用程序开始失败。当我在此环境中更新 ruby 时,情况会在开发上重复出现。之后,我将开发上的 rails 更新为 4.2.6 ,一切都开始顺利进行。但在 Gemfile 中部署更新的 rails 行后,生产没有任何变化。