1

我有一个带有常用字段的标准设计用户模型。

这是针对人们要么正在寻找住宿地点,要么正在寻找住宿地点的情况。所以我有两类用户,一个人可以是。这两个类别非常不同(即寻找住宿地点的人与有住宿地点的人将拥有非常不同的领域)。

所以用户有:

User: name, email, password, profile_id

用户也可以拥有个人资料(即他们正在寻找房子)。

Profile: age, sexuality, religion, occupation

这就是我目前所拥有的。现在我需要稍微改变一下,这样用户就可以拥有个人资料或者......他们可以拥有房子(即他们有房子并且正在寻找更多人):

House: price_per_week, address, etc

如何最好地在 ActiveRecord 中建模?某种多态关联?

4

1 回答 1

1

我发现一般来说,如果多态关系建模的对象甚至略有不同,那么随着时间的推移,多态关系就不能很好地发挥作用。对于您的情况,我建议将两个对象分开。

一般来说,最好的方法是考虑您要检索数据的方式。例如,我想你想同时访问:

@user.house

或者

@user.profile

所以我建议首先在表和 and 表之间建立关系(可以是users可选profileshouses。我还将添加一个type字段,可用于确定用户是两种类型中的哪一种。

这允许用户属于任何一种类型,并允许他们同时拥有 aprofile和 a house

所以房屋和个人资料belong_to用户,以及用户have_many(或have_one)房屋和个人资料

于 2012-05-08T03:38:39.570 回答