Rails и STI с has_many не распознают подкласс - PullRequest
1 голос
/ 24 декабря 2011

У меня есть следующее:

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 для подкласса компонентов в базы, валы и столицы.

Однако, когда я хочу перечислить компоненты, принадлежащие серии, по типу компонента я получаю

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

Возможно, мне не хватает чего-то действительно базового в Rails и STI. Должно ли это работать? (обратите внимание, у меня есть столбец типа в таблице, и в нем есть классы. У меня есть «требуемые» определения подкласса в файле инициализатора, как предложено в другом месте в Stackoverflow)

1 Ответ

0 голосов
/ 24 декабря 2011

Нет, не должно.Вы сказали has_many :components, чтобы получить ассоциацию компонентов, которая будет содержать все компоненты (и подклассы), связанные с объектом.

Он волшебным образом не добавляет ассоциации, ограниченные различными подклассами, но вы можете добавить отдельную bases, если хотите

...