【发布时间】:2012-03-07 11:07:52
【问题描述】:
我正在编写 ruby on rails 应用程序,它将有 2 种不同的用户类型(比如说卖家和买家)。我正在使用 devise gem 来处理身份验证。
我不想使用单表继承有 3 个原因:
1)我不想在我的用户表中有很多列(我必须将卖家和买家的字段存储在一个表中,并且他们会有很多不同的文件)
2) 我不想在我的数据库中有很多空值
3) 保持卖家和买家分开将有助于提高性能速度
我决定为卖家和买家创建 2 个独立的模型(并为每个模型生成设计)。长话短说 - 它引起了一些麻烦(即,处理单一表单登录的困难,对“私人消息”等简单事物使用多态关联,保持我的代码干燥等)
那么问题来了:
您是否认为创建一个具有一些通用字段的模型(用户)以轻松处理与设计的身份验证,然后具有单独的模型(卖家和买家)与 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
如果您能为我的问题想出更好的解决方案 - 请告诉我。
【问题讨论】:
-
Rails - application design for 2 user types 可能被同一用户复制。
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1