【发布时间】:2015-01-21 04:25:12
【问题描述】:
我正在创建一个应用程序,其中有 3 种不同类型的用户。每个用户类型将只有 2-3 个相同的列和 4-5 个对该用户类型唯一的列。
用户类型示例:
Admin
Coach
Player
我最初的方法是创建带有 admin, coach, player 列的 User 表。这些列是定义用户是否具有特定角色的布尔值。管理员会将admin 设置为true 并将所有其他列设置为false。
如果我们所有的用户都有相同的列,如用户名、密码等,这很好用。当我们引入某些用户类型独有的其他列时,就会出现问题。假设所有玩家都需要有地址。我们有这些用于用户表的列:
id
username
password
admin
coach
player
city
address
apartment
zip
etc...
对于玩家,这些列将被填充,但对于管理员和教练,这些值为空。
我的第二个想法是为User 表留下所有用户类型共有的值:
id
username
password
admin
coach
player
然后创建仅针对特定用户类型填充的新表:
class AdminProperties < ActiveRecord::Base
belongs_to :users
end
class CoachProperties < ActiveRecord::Base
belongs_to :users
end
class PlayerProperties < ActiveRecord::Base
belongs_to :users
end
为具有多个用户角色和特定用户独有的列的此类应用程序建模的最佳做法是什么?谢谢。
【问题讨论】:
-
查看hibenate doc 了解一下。
标签: ruby-on-rails ruby-on-rails-4 rails-activerecord