我有以下型号
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都会说出与性别无关的信息。 p>
如何在测试执行期间重新加载Chicken类或修改此代码以消除此问题?
答案 0 :(得分:0)
我决定转而使用单表继承(http://api.rubyonrails.org/classes/ActiveRecord/Base.html#label-Single+table+inheritance),这有望解决这个问题。