Наследование и полиморфные ассоциации в рельсах - PullRequest
1 голос
/ 12 февраля 2010

У меня есть Пользователь модель, которая принадлежит Профиль (принадлежит_ полиморфному). Одна модель поставляется в двух подклассах, но profile_type в User всегда соответствуют родительской модели.

User < ActiveRecord::Base
  belongs_to :profile, :polymorphic => true

SomeProf < ActiveRecord::Base
  has_one :user, :as => :profile

SomeDeepProf1 < SomeProf

SomeDeepProf2 < SomeProf

Тогда:

sdp1 = SomeDeepProf1.new
user = sdp1.create_user
user.profile_type
> 'SomeProf'

Даже с указанием ассоциации в подклассах, profile_type остается SomeProf .

Почему это происходит? Есть ли какой-нибудь способ подкласса профиля_типа, а не родительский класс?

1 Ответ

3 голосов
/ 12 февраля 2010

Это происходит потому, что столбец _type должен идентифицировать таблицу модели и не должен содержать данных о самой модели - просто ссылка.

Однако, если вы проверите user.profile.type, он должен вернуть SomeDeepProf1.

...