所以我有这个问题:
我有我的班级:
class User < ActiveRecord::Base
after_initalize :include_proper_module
private
def include_proper_module
if variable1 = 1
self.class.send(:include, Module1)
else
self.class.send(:include, Module2)
end
end
end
它工作正常,直到我运行所有测试 - 然后如果其中一个测试包含Module1,那么它总是包含在内。
我将database_cleaner与删除策略一起使用,并且不知道我应该在哪里或如何调试它。有没有选项可以在测试之后/之前重置所有包含的模块?
答案 0 :(得分:2)
无论测试如何,该代码都是错误的。事实上,包含该模块会影响整个类定义。
根据实例变量有条件地包含模块没有意义。只要变量为1,Module1
就会混合到每个用户实例的类中。只要变量不同于1,Module2
就会混合到每个用户的用户类中。
结果是每个用户实例都会快速包含两个模块。
我相信这是测试揭示的内容。我不确定你想要完成什么,但这不是正确的方法。