Ruby on rails - 2种用户类型

时间:2012-03-07 11:07:53

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我在rails应用程序上编写ruby,它将有2种不同的用户类型(比如卖家和买家)。我正在使用devise gem来处理身份验证。

我不想使用单表继承有三个原因:
1)我不希望在我的用户表中有很多列(我必须在一个表中存储卖方和买方的字段,并且它们将有很多不同的文件)
2)我不想在我的数据库中有很多空值 3)保持卖家和买家分开将有助于提高绩效速度

我决定为卖家和买家创建2个独立的模型(并为每个模型生成设计)。长话短说 - 它引起了一些麻烦(即,使用单一形式处理登录时遇到困难,使用多态关联来处理简单的事情,如“私信”,保持我的代码DRY等。)

所以这就是问题:
您是否认为创建一个具有一些常见字段的模型(用户)以便使用设计轻松处理身份验证,然后使用belongs_to和has_one关联来存储更多信息的单独模型(卖家和买家)。像这样:

class User < ActiveRecord::Base
  has_one :seller
  has_one :buyer
end

class Seller < ActiveRecord::Base
  belongs_to :user, :conditions => "user_type= 'seller'"
end

class Buyer < ActiveRecord::Base
  belongs_to :user, :conditions => "user_type= 'buyer'"
end

这是一个很好的解决方案吗?或者您认为单表继承会更好吗?

可能造成什么麻烦/困难?
每个用户显示个人资料页面的路由是什么?我希望有类似 website.com/sellers/id website.com/buyers/id

的内容

如果你能为我的问题想出更好的解决方案 - 请告诉我。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

如果您为卖方和买方创建单独的表并使用像Inheritance and polymorphic-associations in rails那样的多态关联,那会更好。

分离这两件事,你将在数据库查询中获得速度,并保持卖家和买家逻辑在他们自己的课程上也是非常好的做法。