我正在创建一个应用程序,我有 3 种不同类型的用户。每个用户类型将只有 2-3 个相同的列和 4-5 个对该用户类型唯一的列。
用户类型示例:
Admin
Coach
Player
我最初的方法是创建包含列admin、coach、player
的User
表。这些列是定义用户是否具有特定角色的 bool 值。管理员会将 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
为这种类型的应用程序建模的最佳做法是什么,其中包含多个用户角色和特定用户独有的列?谢谢。
最佳答案
我建议采用第二种方法,将 user 提取到不同的表中,然后关联每个 admin、coach 和 玩家和他们在一起。
class User < ActiveRecord::Base
...
end
class Coach < ActiveRecord::Base
belongs_to :user
...
end
它不仅有助于保持代码的 DRY,还可以让您灵活地修改子表。
关于ruby-on-rails - 实现用户角色及其独特的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28059603/