Rail の行方不明の定数のオートロードにはうんざりしています。Ruby では、2 つのクラスがあり、一方が他方の内部にネストされているが別のファイルにある場合、両方が相互に依存しているため (循環依存)、どうすればそれらを要求できますか。
# 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
。最初に「user/preferences」をロードすると、既存の User クラスが ActiveRecord をサブクラス化していないため、User をロードするときに失敗します。
循環依存関係を削除するか、可能であれば、 必要に応じて定数に変換されるserialize
文字列を渡して、クラスを遅延ロードする必要があるのではないかと疑っています。'User::Preferences'