私はスーパークラスのワークアウトを持っています:
class Workout < ActiveRecord::Base
SUBCLASSES = [WeeklyWorkout, DailyWorkout, OneTimeWorkout]
(...)
end
そして、サブクラスのリストが必要です。各サブクラスは次のようになります。
class WeeklyWorkout < Workout
(...)
end
したがって、 Workout クラスをロードすると、すべてうまくいきます。しかし、(Workout クラスを最初にロードせずに) サブクラスをロードしようとすると、循環依存関係に問題があります。例えば:
irb(main):062:0> ウィークリーワークアウト
RuntimeError: 定数 WeeklyWorkout のオートロード中に循環依存関係が検出されました
from /var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:460: in `load_missing_constant'
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:183:から`const_missing'に
from /var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:494:in `load_missing_constant'
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:183:から`const_missing'に
from /home/pablo/rails/tobefit/app/models/workout.rb:2:in `'
from /home/pablo/rails/tobefit/app/models/workout.rb:1:in `'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:423:in `load'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:423:in `load_file のブロック'
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:615:in `new_constants_in' から
from /var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:422:in `load_file'
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:323から:`require_or_load'で
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:462:から「load_missing_constant」で
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:183:から`const_missing'に
from /home/pablo/rails/tobefit/app/models/workouts/weekly_workout.rb:1:in `'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:423:in `load'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:423:in `load_file のブロック'
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:615:in `new_constants_in' から
from /var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:422:in `load_file'
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:323から:`require_or_load'で
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:462:から「load_missing_constant」で
/var/lib/gems/1.9.1/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:183:から`const_missing'に
から (irb):62
from /var/lib/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start'
from /var/lib/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start'
from /var/lib/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:64:in `'
from bin/rails:4:in `require'
from bin/rails:4:in `'
問題が発生する理由はわかっています。しかし、私はそれを修正する方法を理解できません。この問題を解決するためにこれを設計する方法を知っている人はいますか?