Inheritance and polymorphic-associations in rails

£可爱£侵袭症+ 提交于 2019-11-29 04:17:12

问题


I have a User model, which belongs to Profile (belongs_to polymorphic). One model comes in two subclasses, but the profile_type in User always correspond to the parent model.

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

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

SomeDeepProf1 < SomeProf

SomeDeepProf2 < SomeProf

Then:

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

Even stating the association in subclasses, the profile_type remains SomeProf.

Why does this happen? Is there any way profile_type match subclass and not the parent class?


回答1:


This happens because the _type column is supposed to identify the model's table and should not contain data on the model itself - just a reference.

However if you inspect user.profile.type it should return SomeDeepProf1.



来源:https://stackoverflow.com/questions/2252757/inheritance-and-polymorphic-associations-in-rails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!