【问题标题】:Ruby on rails - 2 users typesRuby on rails - 2 种用户类型
【发布时间】: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/idwebsite.com/buyers/id

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

【问题讨论】:

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


【解决方案1】:

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

将这两件事分开,您将提高数据库查询的速度,并将卖方和买方逻辑保留在自己的类中也是非常好的做法。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    相关资源
    最近更新 更多