私は次のモデルを持っています
class Chicken < ActiveRecord::Base
after_initialize :grow_up
def grow_up
if gender == "female"
self.class.send(:include, Hen)
elsif gender == "male"
self.class.send(:include, Rooster)
end
end
end
module Hen
def communicate
"cluck cluck!"
end
end
module Rooster
def communicate
"cock-a-doodle-doo!"
end
end
ただし、rspec テストの実行中、最初の Chicken が性別で初期化された後、通信メソッドがキャッシュされ、config/environments/test.rb で cache_classes が false に設定されていても、すべての Chicken は性別に関係なく同じことを言います。
テストの実行中に Chicken クラスをリロードするか、このコードを変更してこの問題を解決するにはどうすればよいですか?