我有一个标准的设计用户模型和通常的字段。
这适用于人们要么寻找住宿地点,要么他们有住宿地点的情况。所以我有两个类别的用户,一个人可以。这两个类别非常不同(即,寻找住宿地点的人与有住处的人有不同的领域。)
所以用户有:
User: name, email, password, profile_id
用户也可以拥有个人资料(即他们正在寻找房屋)。
Profile: age, sexuality, religion, occupation
这就是我现在所拥有的。现在我需要稍微改变一下,因此用户可以拥有个人资料或......他们可以拥有一个房子(即他们有房子并且正在寻找更多人):
House: price_per_week, address, etc
如何在ActiveRecord中对此进行建模?某种多态关联?
答案 0 :(得分:1)
我发现一般来说,如果他们建模的对象甚至有些不同,那么多态关系在一段时间内效果不佳。对于你的情况,我建议将这两个对象分开。
通常,最好的方法是考虑您想要检索数据的方式。例如,我想你想要同时访问:
@user.house
或
@user.profile
所以我建议首先在users
表和两者 profiles
和houses
表之间设置关系(可以是可选的)。我还添加了一个type
字段,可用于确定用户的两种类型中的哪一种。
这允许用户属于 类型,并允许他们同时拥有profile
和house
。
因此,所有用户和个人资料belong_to
用户以及用户have_many
(或have_one
)所在地和个人资料