الميراث والتشكيلات المتعددة الأشكال في القضبان
-
20-09-2019 - |
سؤال
انا املك المستعمل النموذج الذي ينتمي إلى الملف الشخصي (ينتمي إلى متعدد الأشكال). طراز واحد يأتي في فئتين فرعيتين ، ولكن نوع الملف الشخصي في المستعمل تتوافق دائمًا مع النموذج الأصل.
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
.
لا تنتمي إلى StackOverflow