我有几个模型都包含相同的模块:
class MyModel1 < ActiveRecord::Base
include MyModuleName
end
class MyModel2 < ActiveRecord::Base
include MyModuleName
end
class MyModel3 < ActiveRecord::Base
include MyModuleName
end
Run Code Online (Sandbox Code Playgroud)
我没有在每个模型中包含模块,而是尝试了以下方法:
class MyNewModel < ActiveRecord::Base
include MyModuleName
end
class MyModel1 < MyNewModel
end
class MyModel2 < MyNewModel
end
class MyModel3 < MyNewModel
end
Run Code Online (Sandbox Code Playgroud)
但最终会出现一个错误,表示该my_new_models表不存在.
什么是避免重复的正确方法include MyModuleName?
为了让模型继承技术工作,你需要设置self.abstract_class = true在MyNewModel:
class MyNewModel < ActiveRecord::Base
self.abstract_class = true
include MyModuleName
end
class MyModel1 < MyNewModel
end
class MyModel2 < MyNewModel
end
class MyModel3 < MyNewModel
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |