我在 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/