This question already has answers here:

Closed 3 years ago.

Rails Model Inheritance
(2个答案)
我有两节课
class Animal < ActiveRecord::Base; end
class Kitty < Animal; end
但当我Kitty.find_by_name('Ser Pounce')时,我发现我实际上在查询Animals表,尽管已经通过迁移创建了一个Kitty表。
那么,我如何告诉rails我希望Kitty.find_by_name查询Kitty表而不是父Animals表呢?

最佳答案

从继承自activerecord的模型继承是Single Table Inheritance的模式。而不是使用STI(除非这实际上是你想要的),我会使用行为混合模式。基本上,让动物成为一个模块,并使用include,这样你就可以:

module Animal; end

然后
class Kitty < ActiveRecord::Base
  include Animal
end

这可能是使每个模型的表保持不同并保持行为风格oo的最简单方法。

关于ruby - 继承自另一个类和ActiveRecord::Base ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37177123/

10-08 23:13