Реализация STI, где родительский класс не имеет собственного контроллера, это просто модель и имеет связь с другими моделями.Рельсы СТИ - PullRequest
0 голосов
/ 15 сентября 2010

У меня есть следующий сценарий

class XYZ < ActiveRecord::Base
has_many :abcs
end

class ABC < ActiveRecord::Base
belongs_to :xyz
end

class A < ABC
end

class B < ABC
end

class C < ABC
end

Модель ABC не имеет контроллера или вида. Данные, связанные с ABC, будут вставлены из представлений и контроллеров XYZ. Пользователь устанавливает значение типа для ABC, которое может быть или A, B или C.

И в соответствии с типом должен быть создан соответствующий подкласс STI, и данные должны быть сохранены соответствующим образом. Но здесь не создаются экземпляры подклассов, данные сохраняются идеально. Но я делаю это неправильно, так как записал код подклассов в родительский класс STI, потому что этот код не вызывался в подклассе.

Пожалуйста, дайте предложения и предоставьте некоторые решения или учебные пособия.

Спасибо заранее.

1 Ответ

0 голосов
/ 15 сентября 2010

Убедитесь, что модель ABC имеет атрибут type и что он правильно установлен на «A», «B» или «C» при сохранении экземпляров этих классов.

ABC.find и друзья должны затем возвращать экземпляры соответствующего класса.

При создании новых объектов вам, конечно, потребуется некоторый код в вашем контроллере для вызова new на правильном подклассе в зависимости от некоторого вводапараметр.

...