1

Profile (belongs_to polymorphic)に属するUserモデルがあります。1 つのモデルには 2 つのサブクラスがありますが、 Userのprofile_typeは常に親モデルに対応します。

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のままです。

なぜこれが起こるのですか?profile_type が親クラスではなくサブクラスに一致する方法はありますか?

4

1 に答える 1

3

これは、_type列がモデルのテーブルを識別し、モデル自体のデータを含むべきではなく、単なる参照であるためです。

ただし、調べるuser.profile.typeと返されるはずSomeDeepProf1です。

于 2010-02-12T15:23:04.703 に答える