Rails 4.2.6 - has_many through,undefined method'name'do nil:NilClass(ruby 2.3.0,仅在生产时失败)

时间:2016-04-09 12:08:13

标签: ruby-on-rails ruby

我有原型模型

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 行后,生产没有任何变化。

0 个答案:

没有答案