次のように定義された3つのクラスがあります。
class Animal < ActiveRecord::Base
attr_accessible :animal_definition_id, :aquarium_id
belongs_to :animal_definition
belongs_to :aquarium
has_many :comments, as: :commentable
end
class Fish < Animal
end
class Coral < Animal
end
コンソールを起動して次のように入力した場合:
Coral.all
私は得る:
NameError: uninitialized constant Coral
from (irb):1
from /Users/gjr/.rvm/gems/ruby-1.9.3-p125@WebDev/gems/railties-3.2.10/lib/rails/commands/console.rb:47:in `start'
from /Users/gjr/.rvm/gems/ruby-1.9.3-p125@WebDev/gems/railties-3.2.10/lib/rails/commands/console.rb:8:in `start'
from /Users/gjr/.rvm/gems/ruby-1.9.3-p125@WebDev/gems/railties-3.2.10/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
今...私がタイプAnimal.all
すると、それは期待通りに機能します。そして、Coral.all
うまくいきます!
サンゴが機能する前に動物を参照する必要があるのはなぜですか?ちなみに、私が。以外のことをしている場合も同じ動作ですall
。 Coral.class
同じことをします。
私は実際のアプリケーションでこの動作を見たことがありませんが、奇妙なバグが発生するのを待っているのではないかと心配しています。
ありがとう!