Ruby on rails - 2 种用户类型

Posted

技术标签:

【中文标题】Ruby on rails - 2 种用户类型【英文标题】:Ruby on rails - 2 users types 【发布时间】: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

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

【问题讨论】:

Rails - application design for 2 user types 可能被同一用户复制。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

也许您正在寻找多表继承:http://techspry.com/ruby_and_rails/multiple-table-inheritance-in-rails-3/ http://mediumexposure.com/multiple-table-inheritance-active-record/

【讨论】:

以上是关于Ruby on rails - 2 种用户类型的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 中的多个用户角色

[Ruby on Rails] 找不到类型为“application/javascript”的文件“jquery-ui/autocomplete”

Ruby on Rails 与 Wordpress 的集成

Ruby on Rails 无需密码即可更新用户属性

Ruby on Rails,用户可以设置他们的位置

Ruby on Rails,如何确定请求是由机器人还是搜索引擎蜘蛛制作的?