我正在编写 ruby on Rails 应用程序,它将有 2 种不同的用户类型(假设卖家和买家)。我正在使用 devise gem 来处理身份验证。
我不想使用单表继承有 3 个原因:
1)我不想在我的用户表中有很多列(我必须在一张表中存储卖家和买家的字段,并且他们将有很多不同的字段)
2)我不想在我的数据库中有很多空值
3)将卖家和买家分开将有助于提高执行速度
我决定为卖家和买家创建 2 个独立的模型(并为每个模型生成设计)。长话短说 - 它造成了一些麻烦(即处理单一表单登录的困难,使用多态关联来处理“私有(private)消息”等简单的事情,保持我的代码干燥等)
所以问题是:
您是否认为创建一个具有一些公共(public)字段的模型(用户)以便使用设计轻松处理身份验证,然后使用具有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
如果您能想到更好的解决方案来解决我的问题 - 请告诉我。
最佳答案
如果您为卖方和买方创建单独的表并使用像 Inheritance and polymorphic-associations in rails 这样的多态关联,那就更好了。
将这两件事分开,您将获得数据库查询的速度,并将卖方和买方逻辑保留在自己的类上也是非常好的做法。
关于ruby-on-rails - Ruby on Rails - 2 种用户类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600311/