如何创建和使用多态关系?

时间:2010-11-22 07:09:55

标签: ruby activerecord

我是Ruby新手,我读到了“多态关系”。

我读到的是我的头脑。你能用简单的术语帮助我理解多态关系是什么吗?

2 个答案:

答案 0 :(得分:5)

扩展Jinesh建议的the post,整体概念可以解释为:

belongs_to关联由表中的字段指定,该字段指向另一个表中的记录。例如,如果您要为Person及其地址建模,则需要

class Person
  has_one :address
end

class Address
  belongs_to :person #Has a field person_id
end

但是,如果您还有另一个将使用地址的模型Company,则必须共享字段person_id。因此,您将其设为addressable_id,并且Person和Company都是Address模型的“可寻址”对象。所以,当你指定

class Person
  has_one :address, :as => :addressable
end

你告诉Rails,无论何时你搜索一个人的地址,它都会在地址表的addresable_id字段上查找。

答案 1 :(得分:3)

你看过这个吗? http://wiki.rubyonrails.org/howtos/db-relationships/polymorphic

如果您能够提出难以理解的具体问题,那么社区可以解决这个问题会很好。