带有has_many的Rails和STI无法识别子类

时间:2011-12-24 11:49:50

标签: ruby-on-rails-3 sti

我有以下内容:

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上其他地方所建议的那样)

1 个答案:

答案 0 :(得分:0)

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

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