在Rails中制作各种类型用户的标准方法是什么?

时间:2013-05-16 16:43:05

标签: ruby-on-rails ruby class

我开始的项目有多种用户,基本上是买家和卖家模式。某些属性适用于不向卖方提供的买方,但它们共享许多基本用户特征。如果它不是一个Web应用程序,我知道如何继承,但在rails中执行此操作的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

如果是引入角色或组的概念,则应添加角色或组模型,以便用户可以成为买方和卖方。但由于它不是一个角色,而您的目标是拥有买方和/或卖方特定字段,因此您应该有另外两个名为买方和卖方的模型,然后在用户模型中与每个模型建立关联。这样,用户可以是买方,卖方,两者,甚至是两者中的许多人。

如果您在某个时刻需要用户和卖家之间的多对多(例如),那么即使您可以使用HABTM,最好引入一个领带模型并使用has_many:through ,以便它可以有关于关系的数据等。

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

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

答案 1 :(得分:1)

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

您创建基本User模型,然后将User作为基类继承其他不同模型。

答案 2 :(得分:0)

为角色/用户类型之间共享的所有基本属性创建User模型。然后为BuyerSeller以及delegate所有共享属性为User模型制作单独的模型。

这种方法不适用于很多用户类型,但应该适合您的情况。

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