1

我有以下内容:

class Series < ActiveRecord::Base
    has_many :components
end

class Component < ActiveRecord::Base
  belongs_to :series
end

class Base < Component
end
class Shaft < Component
end
class Capital < Component
end

所以,一个系列有很多组件,一个组件属于一个系列。我使用 STI 将组件分为 Bases、Shafts 和 Capitals。

但是,当我想列出属于系列的组件时,按组件类型我得到

 s.bases
 NoMethodError: undefined method `bases' for #<Series:0x007fe30e24d198

也许我错过了关于 Rails 和 STI 的一些非常基本的东西。这应该工作吗?(注意,我在表上有一个类型列,其中包含类。我在初始化文件中“需要”子类定义,正如 Stackoverflow 上其他地方所建议的那样)

4

1 回答 1

0

不,不应该。您已经说过has_many :components,您将获得一个组件关联,它将包含与该对象关联的所有组件(和子类)。

它不会神奇地添加仅限于各种子类的关联,但您可以根据需要添加单独的bases关联

于 2011-12-24T12:25:27.190 回答