0
我需要在应用程序中为所有者和受托人建模,因此您拥有的内容始终由某人拥有,并且可以为其他人出租。我首先用单表继承来解决这个问题,因为这两种类型的人将共享所有的属性,所以你将有一个名为Person的模型关联到拥有Owner和Rentee继承自Person的表的人。Rails - 子类型可以扮演两种角色的类的继承层次结构
问题是单类型继承使用字段类型来识别子类型,因此表中的记录可以表示一个所有者或一个Rentee,但不能同时代表两个,而在真正的上下文中,您可以拥有一个所有者这是从另一个所有者租用的东西,因此该人同时是一个所有者和一个Rentee。
你会如何解决这个问题?你会为业主和人员使用分开的表吗? Rails中有没有其他类型的表继承?
这是一个很好的做法,简单是一件好事。但是,如何有效地获得所有业主名单和所有人员名单? – Miquel 2010-05-23 15:11:53
您可以使用:group选项(group by person_id)从Item表中获取所有所有者ID的列表,然后从Person表中获取这些记录。其他选项(可能更好)是使用belongs_to counter_cache选项并缓存每个人的租用/拥有项目的数量。然后,您可以轻松获得所有受托人和所有者(例如,Person.find(:conditions =>'items_count> 0'))。 – 2010-05-23 19:49:11