ruby-on-rails - 序列化时未定义的类/模块

标签 ruby-on-rails serialization eager-loading

我在 ActiveRecord 模型中存储类型对象数组,例如:

class Store::Bin < ActiveRecord::Base
  serialize :items, Array
end

class Store::Item
   include Virtus.model
   attribute :name, String
   ...
end

当我在开发模式下更改代码并刷新浏览器时,我收到未定义的类/模块 Store::Item 异常。

似乎有些东西与类加载发生了冲突。所有文件都位于 app/models/store/... 目录中,正确命名为驼峰式名称。

使用 Rails 控制台时也会出现同样的问题。 reload! 无法修复控制台中的问题;相反,我必须退出并重新启动控制台。

最佳答案

向数组添加类型似乎可以解决问题......但导致关联的 FactoryGirl 工厂出现问题。

class Store::Bin < ActiveRecord::Base
  serialize :items, Array[Store::Item]
end

更新:真正的问题是,当对 store/bin.rb 进行代码更改时,该类会自动加载,但自动加载器不知道 Store::Item 是依赖项。

真正的修复:使用 require_dependency 声明所需的依赖项

require_dependency "store/item"
class Store::Bin < ActiveRecord::Base
  serialize :items, Array
end

关于ruby-on-rails - 序列化时未定义的类/模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231522/

相关文章:

java - 是否有一种标准/完善的方法来序列化 Java 类以在 C++ 中使用,而无需使用 XML 或 JSON 等标记格式?

ruby-on-rails - ruby 网 :SSH Control Master?

javascript - 将图像与文本叠加、保存并共享

wpf - 将 WPF FlowDocuments 序列化到/从 PackagePart(包括图像等)

c# - 将JSON转换为C#对象格式的在线工具

ruby-on-rails - 如何让 Rails 获得急切的加载计数?

mysql - 在 Rails 3 中急切加载?

ruby-on-rails - Rails Eager Loading 和 where 子句

ruby-on-rails - 如何遍历 ruby​​ 中的 yaml 哈希结构?

ruby-on-rails - 如何避免 rspec 中的长堆栈跟踪