为什么会出现多态关系?如果数据库表未规范化,为什么会使用这种多态关系?这是为了减少数据库中的数据吗?我正在研究2天,但我没有找到一致的答案。你能帮帮我吗?
答案 0 :(得分:1)
当关系可以同时应用于多个模型时,使用多态关系。
假设您有一个名为Profile
的模型,其中包含Teacher
和Student
与以下关系:
Student has_one :profile
Teacher has_one :profile
Profile belongs_to :student
Profile belongs_to :teacher
现在我们假设您选择Profile
的第一条记录:
@p = Profile.first
你想得到这条记录的父母..这是一个问题因为你不知道你是否必须@p.student
或@p.teacher
然后多态关联可以证明是有用的,它向Profile
添加了两个字段:父类和父类的id。它解决了知道它适用于哪个父母的问题。
你只需要调用一个中间抽象模型(假设Profileable
在数据库中确实不存在作为一个表,但导致父母不知道它的类)