0

我正在开始一个具有多种用户的项目,基本上是买方和卖方模型。有些属性适用于买方,但不适用于卖方,但它们具有许多基本的用户特征。如果它不是一个网络应用程序,我知道如何进行继承,但是在 Rails 中这样做的正确方法是什么?

4

3 回答 3

1

如果是引入角色或组的概念,您应该添加角色或组模型,以便用户可以成为买家和卖家。但由于它与角色无关,并且您的目标是拥有特定于买方和/或卖方的字段,因此您应该有两个额外的模型,称为买方和卖方,然后在用户模型中与每个模型建立关联。通过这种方式,用户可以是买方、卖方,甚至两者兼而有之。

如果您在某些时候需要用户和卖家之间的多对多(例如),那么即使您可以使用 HABTM 来做到这一点,引入 tie 模型并使用 has_many :through 也是一个好主意,这样它可以有关于关系等的数据。

假设您正在使用 ActiveRecord,请在开始之前仔细阅读:http: //guides.rubyonrails.org/association_basics.html

(或者,对于边缘:http ://edgeguides.rubyonrails.org/association_basics.html )

于 2013-05-16T17:10:40.630 回答
1

您正在寻找的 Rails 中的概念称为Single Table Inheritance

您创建一个基User模型,然后将不同的其他模型User作为基类进行子类化。

于 2013-05-16T20:05:07.167 回答
0

User为角色/用户类型之间共享的所有基本属性创建一个模型。然后为模型创建单独的模型Buyer以及模型Sellerdelegate所有共享属性User

这种方法不适用于许多用户类型,但应该足以满足您的情况。

参考:http ://api.rubyonrails.org/classes/Module.html#method-i-delegate

于 2013-05-16T16:46:14.623 回答