我被 Rail 自动加载丢失的常量给宠坏了。在 Ruby 中,如果我有两个类,一个嵌套在另一个内部但在不同的文件中,我如何要求它们,因为它们相互依赖(循环依赖)。
# user.rb
class User < ActiveRecord::Base
serialize :preferences, User::Preferences
end
# user/preferences.rb
class User::Preferences
end
# user_spec.rb
require 'user'
require 'user/preferences'
注意:我不需要Rails 环境。
如果我先尝试加载用户,代码会失败,因为它还不知道User::Preferences
。如果我首先加载“用户/首选项”,它会在加载用户时失败,因为现有的用户类不是 ActiveRecord 的子类。
我怀疑我需要删除循环依赖,或者如果可能的话, 通过传递一个在需要时变成常量serialize
的字符串来延迟加载类。'User::Preferences'