سؤال

انا املك المستعمل النموذج الذي ينتمي إلى الملف الشخصي (ينتمي إلى متعدد الأشكال). طراز واحد يأتي في فئتين فرعيتين ، ولكن نوع الملف الشخصي في المستعمل تتوافق دائمًا مع النموذج الأصل.

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'

حتى ذكر الجمعية في الفئات الفرعية ، نوع الملف الشخصي بقايا SomeProf.

لماذا يحدث هذا؟ هل هناك أي طريقة لمطابقة الفئة الفرعية لمطابقة وليست فئة الوالدين؟

هل كانت مفيدة؟

المحلول

هذا يحدث لأن ال _type من المفترض أن يحدد العمود جدول النموذج ويجب ألا يحتوي على بيانات على النموذج نفسه - مجرد مرجع.

ولكن إذا كنت تفحص user.profile.type يجب أن تعود SomeDeepProf1.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top