我有以下内容:
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上其他地方所建议的那样)
答案 0 :(得分:0)
不,不应该。你已经说has_many :components
所以你得到一个组件关联,它将包含与该对象关联的所有组件(和子类)。
它不会神奇地添加仅限于各种子类的关联,但如果需要,可以添加单独的bases